2016-08-03 5 views
0

그래서 다소 복잡한 mysql 쿼리 질문이 있습니다. 나는 3 개의 테이블을 가지고있다. 하나는 항목 표입니다. 하나는 범주 테이블입니다. 그리고 하나는 2 개의 필드, itemID 및 categoryID 만있는 연결 테이블입니다. 이 관계는 다 대다 관계이므로 하나의 항목이 여러 범주에 속할 수 있으며 각 범주에는 여러 항목이있을 수 있습니다. 이제 범주 테이블의 두 필드는 isactive 및 ismain입니다. 그들은 단지 1 또는 0의 bool 일뿐입니다. isactive = 0 또는 ismain = 0 또는 둘 다에서 범주에 속하는 모든 항목을 가져오고 싶습니다.항목이 특정 범주에만있는 행 선택

나는 시간을내어 누군가가 놀 수있는 SQL 바이올린을 만들었습니다. 하위 쿼리를 사용하여 http://sqlfiddle.com/#!9/b03842/2

답변

0

솔루션 : 당신이 그 열에 NULL 값을 사용할 수 있기 때문에

SELECT DISTINCT i.* FROM cart_item i 
    JOIN cart_item_category ic ON i.itemref = ic.itemref 
    WHERE ic.catid IN ( 
    SELECT id FROM cart_category WHERE active = 0 OR ismain = 0 
) 
+0

하지만, 활성 <> 1 또는 ismain <> 1 이러한 조건을 변경할 수 있습니다. –

+0

더 가깝습니다. 그러나 여전히 유효한 카테고리와 유효하지 않은 카테고리에 속하는 항목을 반환하고 있습니다. – dmikester1

+0

'AND NOT IN (SELECT id FROM cart_category WHERE active = 1 AND ismain = 1) '을 추가해야합니까? 그런 식으로? – dmikester1