MySQL Join에서 여러 조건을 충족해야 하는 문제가 발생함
테이블이 두 개 있어요.rooms
그리고.rooms facilities
원하는 시설을 갖춘 방을 골라야 합니다.
다음 쿼리를 사용하여 하나의 시설이 있는 방(id=4 - id_fu - )을 선택하면 Everything it ok:
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
이것도 동작합니다(테스트되지 않았습니다).
SELECT u.*
FROM room u
JOIN facilities_r fu ON fu.id_uc = u.id_uc AND u.id_fu IN(4,3)
WHERE 1 AND vizibility = 1
GROUP BY id_uc
ORDER BY u_premium desc , id_uc desc
한다면u.id_fu
숫자 필드입니다.그러면,'
그들 주위에.에 대해서도 마찬가지입니다.vizibility
필드가 텍스트 필드(데이터 유형 char, varchar 또는 텍스트 데이터 유형 중 하나(예: longtext))인 경우에만 값은 다음과 같이 묶어야 합니다.'
또는 심지어"
.
또한 I와 Oracle도 테이블과 필드 이름을 백틱으로 묶을 것을 권장합니다.따라서 필드 이름에 키워드가 포함되어 있으면 문제가 발생하지 않습니다.
언급URL : https://stackoverflow.com/questions/8018550/having-issues-with-a-mysql-join-that-needs-to-meet-multiple-conditions
'source' 카테고리의 다른 글
JavaScript에서 개체의 속성별로 인덱스를 가져오려면 어떻게 해야 합니까? (0) | 2022.12.03 |
---|---|
create-module-app 웹 팩 구성 및 파일은 어디에 있습니까? (0) | 2022.12.03 |
방금 설치된 MariaDB 10.3 데이터베이스의 상태를 확인할 때 오류 발생 (0) | 2022.12.03 |
MySQL 테이블에서 고유 제약 조건을 삭제하는 중 (0) | 2022.11.24 |
MariaDB 10.1의 DELETE 구문 오류 원인을 알 수 없습니다. (0) | 2022.11.24 |