左连接不起作用

LEFT JOIN doesn't work

我需要编写一个 SQL 查询,它连接三个 tables。

table 是:

我的查询是:

SELECT 
    h.id, h.name, h.nz, h.photo, h.price, h.standard,
    h.idcountry, k.name as k_name 
FROM hotels as h 
LEFT JOIN coutries AS k ON k.id=h.idcountry 
LEFT JOIN home_promo AS hm ON hm.idhotel=h.id 
WHERE h.publications=1

但它 returns 来自酒店 table 的所有记录。 有人可以帮忙吗?

如果您只想要 home_promo 中的那些酒店 ID,那么,

SELECT h.id,h.name,h.nz,h.photo,h.price,h.standard,h.idcountry,k.name as k_name
FROM hotel_promo hp
LEFT JOIN hotel h on h.id = hp.idhotel
LEFT JOIN coutries AS k ON k.id=h.idcountry
WHERE h.publications=1

这应该可以解决问题:

SELECT h.id,h.name,h.nz,h.photo,h.price,h.standard,h.idcountry,k.name as k_name 
FROM hotels as h 
JOIN home_promo AS hm ON hm.idhotel=h.id 
LEFT JOIN coutries AS k ON k.id=h.idcountry 
WHERE h.publications=1

尽管您可能也想从加入的国家/地区中删除 LEFT,因为将其保留在那里仍会 return 来自没有匹配国家/地区的酒店的结果。

如果 home_promo 中的 ID 和国家匹配

,则此查询将有效
SELECT h.id,h.name,h.nz,h.photo,h.price,h.standard,h.idcountry,k.name as k_name 
FROM hotels as h 
LEFT JOIN coutries AS k ON h.idcountry = k.id 
LEFT JOIN home_promo AS hm ON h.id = hm.idhotel
WHERE h.publications=1