나는 목록 데이터베이스가 있습니다. 기본적으로MySQL 테이블에 열 데이터가 있는지 확인
id | listing_id | attribute_id
listings_attributes 테이블에는 특정 목록에 할당 된 속성 : 나는이처럼 보이는 listings_attributes 데이터베이스를 가지고있다.
나는 그들이 가지고있는 속성에 따라 목록을 필터링하고 싶습니다.
예를 들어 attribute_id가 1 인 모든 목록을 찾고 싶습니다. 쉽습니다. 내 문제는 하나의은 attribute_id와 명부가있는 경우 내가 1의은 attribute_id을 가지고 2. 목록을 뽑아 어떻게하지만 2의은 attribute_id이없는 무엇
SELECT l.id FROM listings AS l
LEFT JOIN listings_attributes AS la ON l.id = la.listing_id
WHERE la.attribute_id = 1
GROUP BY l.id
, 난 몰라 이것들을 데이터베이스에서 빼내고 싶습니다.
그러나 attribute_id가 1, 2 및 3 인 목록이 있으면 데이터베이스에서 가져 오도록하고 싶습니다.
여기에 나와있는 SQL이 있지만 "attribute_id"사이의 "OR"이 작동하지 않으며 "AND"도 아닙니다.
SELECT l.id FROM listings AS l
LEFT JOIN listings_attributes AS la ON l.id = la.listing_id
WHERE (la.attribute_id = 1 OR la.attribute_id = 2)
GROUP BY l.id
위에서 설명한대로 작동하려면 어떤 코드가 필요합니까?
감사합니다. Chris! HAVING COUNT (*) = 2를 더 구체적으로 만들 수 있습니까? 실제로 코드에 LEFT JOINS가 여러 개 있습니다. –
사실 나는 약간의 잘못된 테스트라고 생각합니다. 작동하는 것 같습니다 :) 도와 줘서 고마워! –