그래서 나는 밴드 800과 밴드 900이 있고 밴드 1500은없고 밴드 2500은이 두 테이블에있는 모든 안테나를 얻고 싶습니다.
표 안테나 :
id
-------------
antena_1
antena_2
antena_3
antena_4
antena_5
테이블 밴드 :
antena_id band
--------------------------
antena_1 800
antena_1 900
antena_1 1500
antena_1 2500
antena_2 800
antena_2 900
antena_2 1500
antena_3 800
antena_3 900
antena_3 1500
antena_3 2500
antena_4 800
antena_4 900
antena_5 800
antena_5 1500
antena_6 800
antena_7 800
antena_7 900
antena_7 3500
따라서 쿼리는 antena를 반환해야합니다 : antena_4 및 antena_7
나는 이것을 시도했지만 1500 밴드가없는 안테나를 반환합니다.
SELECT * FROM antenas INNER JOIN bands ON antenas.id = bands.antena_id WHERE
NOT EXISTS (
SELECT antena_id FROM bands AS innerBands
WHERE innerBands.antena_id = antenas.id AND (
bands.band = "1500" OR bands.band = "2500"
)
)
AND band = "800" AND band = "900"
GROUP BY antenas.id
ORDER BY antenas.id ASC
NOT EXISTS가 WHERE에서 죄를 짓는 일이 전혀 없는지 궁금하고 공동 테이블이므로 HAVING을 사용해야 할 수도 있습니다.
나는 많은 것을 시도한 후이 시점에서 꽤 단서가 없습니다.
집계 사용 :
select antenna_id
from bands
group by antenna_id
having sum(band = 800) > 0 and
sum(band = 900) > 0 and
sum(band = 1500) = 0 and
sum(band = 2500) = 0;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다