如何选择2个条件表并显示所有数据
store_profile
id + store_name
1 | Accessorize.me
2 | Active IT
3 | Edushop
4 | Gift2Kids
5 | Heavyarm
6 | Bamboo
store_fee
id + store_id + date_end
1 | 1 | 27-6-2013
2 | 2 | 29-8-2013
3 | 3 | 02-6-2013
4 | 4 | 20-4-2013
以下是我之前的查询
$query = "select sp.id, sp.store_name, sf.id, sf.store_id, sf.date_end from store_profile sp, store_fee sf where sf.store_id=sp.id"
结果是这样的:
1 | Accessorize.me 27-6-2013
2 | Active IT 29-8-2013
3 | Edushop 02-6-2013
4 | Gift2Kids 20-4-2013
但我想要的是显示所有商店名称,包括date_end
,但如果没有date_end
仍然可以显示商店名称为空date_end
答案 0 :(得分:1)
使用左连接:
select sp.id, sp.store_name, sf.id, sf.store_id, sf.date_end
from store_profile sp left join store_fee sf on sf.store_id=sp.id
答案 1 :(得分:1)
您使用的语法被解释为INNER JOIN
,这意味着store_profile
中没有相应条目的商店将不会显示。您想使用LEFT JOIN
:
SELECT sp.id, sp.store_name, sf.id, sf.store_id, sf.date_end
FROM store_profile sp
LEFT JOIN store_fee sf
ON sf.store_id=sp.id
LEFT JOIN
表示即使第二个表中没有匹配项,也会返回第一个表中的所有记录。
答案 2 :(得分:1)
您想使用外部联接。使用外连接时,连接表上的列不需要与连接表中的条件列匹配即可获得结果:
SELECT * FROM store_profile sp LEFT JOIN store_fee sf ON (sf.store_id = sp.id)