首页 > 解决方案 > 使用 MySql 左连接选择查询

问题描述

我有 3 个表(属性,设施,property_facility)

现在我想从facility带有属性数据的表中获取所有设施到给定的属性 ID。

我尝试LEFT JOIN如下。但我无法从设施表中获得所有设施。

SELECT property_id
     , contract_id
     , type_id
     , location_id
     , beds
     , ROUND(price,3) as price
     , f.facility_id
     , f.name
     , pf.facility_id
FROM  facility f  
LEFT JOIN property_facility pf ON pf.facility_id = f.facility_id AND pf.property_id = 6
LEFT JOIN property p USING(property_id) 
WHERE p.property_id = 6

谁能告诉我如何正确进行此查询?

标签: mysqlsqlselect

解决方案


您的WHERE子句正在过滤掉不匹配的设施。您将需要切换USINGON并执行以下操作:

FROM facility f LEFT JOIN
     property_facility pf
     ON pf.facility_id = f.facility_id AND
        pf.property_id = 6 LEFT JOIN
     property p 
     ON p.property_id = pf.property_id AND p.property_id = 6

您似乎理解了这个概念,因为您对第一个使用相同的条件JOIN

嗯,实际上,property_id并没有改变。因此,如果您愿意,您可以删除该WHERE子句并继续。USING


推荐阅读