J'ai un problème avec une requête SQL, en fait une requête simple mais je ne peux pas comprendre ce qui me manque, alors je suis venu vous demander votre aide ... Alors, ce que je dois faire
J'ai deux tables rooms
et rooms facilities
... et je dois sélectionner les chambres avec les équipements souhaités ..
Si je sélectionne une pièce avec une installation (installation avec id = 4 - id_fu -) ... en utilisant la requête suivante
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
tout va bien.
Mais si je veux sélectionner la pièce avec plus de facilités, disons des installations avec id = 4 et id = 3 .. en utilisant la requête suivante
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
ça ne marche pas.
Je ne comprends pas pourquoi ça ne marche pas, mais je ne vois pas comment poser la question ...
Merci Mihai
Vous pouvez regrouper les conditions avec des parenthèses. Lorsque vous vérifiez si un champ est égal à un autre, vous souhaitez utiliser OR
. Par exemple, 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
Vous devez utiliser OR ici, pas AND.
Depuis id_fu ne peut pas être égal à 4 et 3, les deux à la fois.
Si vous rejoignez la table des installations à deux reprises, vous obtiendrez ce que vous recherchez:
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