SELECT *
FROM hotel
LEFT JOIN hotel_pictogram_mm ON hotel.uid=hotel_pictogram_mm.uid_local
LEFT JOIN pictogram ON hotel_pictogram_mm.uid_foreign=pictogram.uid
WHERE
pictogram.id = 3
AND pictogram.id = 5
这个查询will have empty set
因为pictogram.id = 3
和pictogram.id = 5
。可以在同一时间为TRUE。使用OR
代替。
所以,你应该用
SELECT *
FROM hotel
LEFT JOIN hotel_pictogram_mm ON hotel.uid=hotel_pictogram_mm.uid_local
LEFT JOIN pictogram ON hotel_pictogram_mm.uid_foreign=pictogram.uid
WHERE
pictogram.id = 3
OR pictogram.id = 5
注意:既然你是做留在pictogram
JOIN,并使用pictogram.id = 3
在WHERE
它会像INNER JOIN
。
insted的,你可以做这样的
SELECT *
FROM hotel
LEFT JOIN hotel_pictogram_mm ON hotel.uid=hotel_pictogram_mm.uid_local
LEFT JOIN pictogram ON hotel_pictogram_mm.uid_foreign=pictogram.uid
AND (pictogram.id = 3 OR pictogram.id = 5)
希望这有助于。
也许尝试与OR:'pictogram.id = 3或pictogram.id = 5'? – Typoheads
或是不正确的说法,因为结果会显示有健康或免费wifi的酒店。但我只需要两家酒店。 – matin
相同的字段不能有2个不同的值,所以使用OR不是正确的语句。因此,您需要在BOTH加入酒店的同时,在图标上检查2个不同的行。 – Kickstart