左连接不起作用
LEFT JOIN doesn't work
我需要编写一个 SQL 查询,它连接三个 tables。
table 是:
Hotels
: 编号 |姓名 |新西兰 |照片 |价格 |标准 | idcountry
Countries
: 编号 |名字
home_promo
: 编号 | idhotel
我的查询是:
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
我需要编写一个 SQL 查询,它连接三个 tables。
table 是:
Hotels
: 编号 |姓名 |新西兰 |照片 |价格 |标准 | idcountryCountries
: 编号 |名字home_promo
: 编号 | idhotel
我的查询是:
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