我在MySQL中有这样的查询:
SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT OUTER JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id
WHERE pr7.field=23jos_hp_properties表有27行,但查询只返回一行。基于,我认为这可能是因为WHERE子句。jos_hp_properties2表具有字段id、property、field、value,其中field是第三个表的外键(我不需要从中获取数据)。
是否有方法从第一个表中选择所有行,包括字段为23的表#2中的值(如果没有字段23,则为NULL )?
发布于 2010-04-23 16:48:24
好的。将WHERE条件移动到联接:
SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT JOIN `jos_hp_properties2` pr7
ON pr7.property=pr.id
AND
pr7.field=23发布于 2010-04-23 16:49:37
必须将pr7条件放在联接中,而不是where子句中。where子句在执行联接后对整个结果集起作用。
SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT OUTER JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id and pr7.field=23发布于 2010-04-23 16:48:57
试试这个:
SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT OUTER JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id
WHERE (pr7.field=23 OR pr7.field is null)https://stackoverflow.com/questions/2700354
复制相似问题