모든 특정 사용자 이벤트를 검색 할 데이터베이스에 대한 SQL 쿼리를 작성하려고합니다. 반복적으로 표시되면 시작일로부터 52 주 동안 매주 게재되기를 바랍니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 현재 사용중인 코드가 꽤 복잡해 보입니다. 여기 단일 SQL 쿼리 오류
event (
event_id INT NOT NULL AUTO_INCREMENT, (PK)
title VARCHAR(80) NOT NULL,
description VARCHAR(200),
event_start DATETIME,
event_end DATETIME,
group_id INT NOT NULL,
recurring BOOLEAN
);
Users{
UserID (PK)
Username
}
Groups{
GroupID (PK)
GroupName
}
Membership{
UserID (FK)
GroupID (FK)
}
내가 지금 가지고있는 쿼리, 그것은 현재 작동하지 않습니다, 누군가가 나를 도와주세요 수있다 : 다음과 같이
내 테이블이 구성되어?
var result = db.Query(
@"SELECT e.event_id, e.title, e.description, e.event_start, e.event_end, e.group_id, e.recurring
FROM event e
JOIN Membership m ON m.GroupID = e.group_id
WHERE e.recurring
AND m.UserID = ?
AND e.event_start >= ?
AND e.event_end <= ?
UNION ALL
SELECT e.event_id, e.title, e.description, DATEADD(week, w.weeks, e.event_start),
DATEADD(week, w.weeks, e.event_end), e.group_id, e.recurring
FROM event e
JOIN Membership m ON m.GroupID = e.group_id,
(SELECT row_number() OVER (ORDER BY Object_ID) AS weeks
FROM SYS.OBJECTS) AS w
WHERE NOT e.recurring
AND m.user_id = ?
AND e.event_start >= ?
AND e.event_end <= ?", username, start, end, username, start, end
);
사람은 반복이 아닌 모든 이벤트를 선택하도록 내 코드를 적응 도와 드릴까요과 52 주 동안 같은 시간에 반복 일정을 선택?
부수적으로 1 년에 52 주를 기억하지 마십시오. –
52.177457 주! 그래도 쉽게 내릴 수 있습니다. :) –
나는 현재의 해가 52 주를 갖지 않을 때마다 눈먼 공황 상태에서 또 다른 추악한 해킹을 얻는 시스템을 보았습니다. –