2013-08-05 39 views
0

我有2个表,如下所示。从表中获取所有记录,即使在关联表中没有条件的记录

Store表

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 

请建议solution.Thank你。

得到了解决:

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) 

回答

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') 
+0

但我需要从商店1和3(WHERE ss.store_id IN(1,3)) – Gerry

+0

得到记录如果可以的话,这与您所需的输出相矛盾改变你想要的产品 –

+0

基本上我需要显示从选定的商店购买。如果选定的商店在选定的日期内没有任何购买,那么它应该显示为0购买。 – Gerry

0

你的where clausule排除NULL值。添加或为空日期和该ID在哪里...

相关问题