실제로 세 개의 테이블이 있습니다. 범주, 사용자 및 사용자 범주입니다. 사용자가 볼 수 있듯이 m-n userCategories 테이블을 통해 여러 범주에 사용자를 할당 할 수 있습니다.SQL UNION 쿼리 단순화
특정 사용자에 대한 모든 카테고리를 선택하고 싶습니다. 카테고리가 지정된 사용자에게 할당되면 userFk-column은 userId (예 : 5) 여야하며, 그렇지 않으면 NULL이어야합니다.
이 쿼리와 비슷한 결과가 나타납니다. 그러나이 쿼리를 단순화하는 방법이 있습니까?
select *
from (
SELECT `categoryId`, `category`, userFk FROM `category` c
left join usercategories uc on c.categoryId = uc.catFk
where userFk = 5
union
SELECT `categoryId`, `category`, userFk FROM `category` c
left join usercategories uc on c.categoryId = uc.catFk
where userFk != 5 OR userFk is NULL
) as result
group by categoryId
음 .. 예를 들어 범주가 사용자 2와 5에 할당되고 categoryId별로 그룹을 말하면 사용자 5에게 할당 된 행이 손실 될 수 있습니다. 무슨 뜻인지 이해합니까? –