반응형
여러 조건으로 MySQL 조인
SQL 쿼리, 실제로 간단한 쿼리에 문제가 있지만 내가 무엇을 놓치고 있는지 파악할 수 없어서 도움을 청하러 왔습니다 ... 그래서, 내가해야 할 일
테이블이 두 개 rooms
있고 rooms facilities
... 원하는 시설이있는 방을 선택해야합니다 ..
하나의 시설 (id = 4-id_fu-) 인 시설이있는 방을 선택하면 ... 다음 쿼리를 사용하여
SELECT u.* FROM rooms u
JOIN facilities_r fu
ON fu.id_uc = u.id_uc
AND fu.id_fu = '4'
WHERE 1
AND vizibility='1'
GROUP BY id_uc
ORDER BY u_premium desc, id_uc DESC
괜찮습니다.
하지만 더 많은 시설이있는 방을 선택하려면 다음 쿼리를 사용하여 id = 4 및 id = 3 .. 인 시설을 가정 해 보겠습니다.
SELECT u.* FROM room u
JOIN facilities_r fu
ON fu.id_uc=u.id_uc
AND fu.id_fu = '4'
AND fu.id_fu = '3'
WHERE 1
AND vizibility = '1'
GROUP BY id_uc
ORDER BY u_premium DESC, id_uc DESC
작동하지 않습니다.
왜 안되는지 이해가 안되는데 조건을 어떻게 넣을지 모르겠네요 ...
고마워, 미하이
괄호로 조건을 그룹화 할 수 있습니다. 필드가 다른 필드와 같은지 확인할 때 OR
. 예를 들면 WHERE a='1' AND (b='123' OR b='234')
.
SELECT u.*
FROM rooms AS u
JOIN facilities_r AS fu
ON fu.id_uc = u.id_uc AND (fu.id_fu='4' OR fu.id_fu='3')
WHERE vizibility='1'
GROUP BY id_uc
ORDER BY u_premium desc, id_uc desc
SELECT
u . *
FROM
room u
JOIN
facilities_r fu ON fu.id_uc = u.id_uc
AND (fu.id_fu = '4' OR fu.id_fu = '3')
WHERE
1 and vizibility = '1'
GROUP BY id_uc
ORDER BY u_premium desc , id_uc desc
여기서 AND가 아닌 OR을 사용해야합니다.
id_fu는 동시에 4와 3과 같을 수 없기 때문입니다.
시설 테이블에 두 번 참여하면 원하는 것을 얻을 수 있습니다.
select u.*
from room u
JOIN facilities_r fu1 on fu1.id_uc = u.id_uc and fu1.id_fu = '4'
JOIN facilities_r fu2 on fu2.id_uc = u.id_uc and fu2.id_fu = '3'
where 1 and vizibility='1'
group by id_uc
order by u_premium desc, id_uc desc
참조 URL : https://stackoverflow.com/questions/8018550/mysql-join-with-multiple-conditions
반응형
'IT TIP' 카테고리의 다른 글
"-fno-exceptions"를 사용하면 "new T"는 어떻게됩니까? (0) | 2020.12.30 |
---|---|
Symfony2-Doctrine : ManyToMany 관계는 데이터베이스에 저장되지 않습니다. (0) | 2020.12.30 |
Haskell의 공분산 및 반 분산에 대한 논의가 많지 않은 이유는 무엇입니까 (Scala 또는 C #과 반대)? (0) | 2020.12.30 |
Linux의 최대 프로세스 수 (0) | 2020.12.30 |
sys.exit (0)과 os._exit (0)의 차이점은 무엇입니까? (0) | 2020.12.30 |