从表中获取所有记录,即使关联表中没有记录,两者都有条件

时间:2013-08-05 07:25:53

标签: mysql join

我有2张表格如下。

商店表

store_id store_name
    1    abc
    2    bcd    
    3    cde

购买表

purchase_id  store_id   date
001     1           2013-07-10
002     1           2013-07-20

004     2           2013-07-20
005     2           2013-08-01

我目前的查询是:

SELECT ss.store_id,ss.store_name,tt.transaction_id FROM stores ss LEFT JOIN Purchase pp left join   on (ss.store_id=pp.store_id)

WHERE ss.store_id IN (1,3)  AND ((pp.date >= '2013-07-05') AND (pp.date <= '2013-08-05')) 

显示如下输出:

Store_id store_name purchase_id

1        abc        001
2        abc        002

我需要输出:

Store_id store_name purchase_id

1        abc        001
2        abc        002
3        cde        NULL

请建议解决方案。谢谢。

得到解决方案:

SELECT ss.store_id,ss.store_name,tt.transaction_id FROM stores ss 
LEFT JOIN Purchase pp left join   on (ss.store_id=pp.store_id) 
AND ((pp.date >= '2013-07-05') AND (pp.date <= '2013-08-05'))
WHERE ss.store_id IN (1,3)   

2 个答案:

答案 0 :(得分:0)

您将查询限制为搜索行hvaing store_id(1,3)

删除了该条款, 试试这个::

SELECT 
ss.store_id,
ss.store_name,
tt.transaction_id 
FROM stores ss 
LEFT JOIN Purchase pp left join   on (ss.store_id=pp.store_id)

WHERE (pp.date >= '2013-07-05') AND (pp.date <= '2013-08-05')

答案 1 :(得分:0)

您的where clausule排除NULL值。为日期添加OR IS NULL,并在其中添加ID ...