날짜에 대한 정보가 포함 된 달력을 가져올 SQL이 있습니다.행을 잃지 않고 사용자가 필터링하도록 SQL을 작성하는 방법은 무엇입니까?
SELECT h.user_id, name, description, name_day, h.holiday_id, day
FROM calendar_dates d left join calendar_date_holiday h on d.id=h.date_id
left join calendar_holidays hs on h.holiday_id=hs.id
WHERE h.user_id IS NULL
or h.user_id IN (SELECT id FROM calendar_users WHERE username='bd107a66ba')
order by day asc
다른 사용자에게 휴일 인 경우 holiday_id가없는 경우 작동합니다. 이제 조건 ('어디서 h.user_id IS NULL 또는 h.user_id IN (SELECT id FROM calendar_users WHERE username ='bd107a66ba ')`)보다 다른 user_id : s 인 휴가 ID에도 가입하고 싶습니다. 다른 사용자의 휴일을 원하지 않습니다. 그것을 어떻게 성취 할 수 있습니까? 예를 들어
어떤 사용자가 어떤 자신의 휴가가없는 경우는, 결과는 bd107a66ba
아닌 다른 사용자가 휴가를 삽입하면 그 가입하지 않기 때문에, 나는 만 29 행을 얻을
user_id name description name_day holiday_id day
NULL NULL NULL Name NULL 1
...
(30 rows)
좋다. 노동 조합을 사용해야합니까? 다른 사용자가 현재 사용자가 아닌 같은 날에 휴일이있는 경우 빈 휴일을 원합니다.
실제로하려는 것을 더 잘 설명하기 위해 샘플 데이터와 원하는 결과를 제공 할 수 있습니까? –
WHERE 절을 첫 번째 조인의 ON 절에 넣을 수 있습니다. – Kickstart