0

我有 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)   
4

2 回答 2

0

您正在限制查询以搜索带有 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')
于 2013-08-05T07:27:38.647 回答
0

您的 where 子句不包括 NULL 值。为日期添加 OR IS NULL 和该 id 在哪里...

于 2013-08-05T07:30:11.723 回答