2012-12-28 98 views
0

没有记录我有这个疑问:MySQL查询返回0时日期

Select 
    X.type1transsum, Y.type2transsum, 
    (X.type1transsum + Y.type2transsum), 
    X.`date` 
From (
    Select sum(trans) as type1transsum, `date` 
    from type1trans where shopcode = 1037 
    group by `date` 
) X 
Left join (
    Select sum(trans) as type2transsum, `date` 
    from type2trans where shopcode = 1037 
    group by `date` 
) Y on X.`date` = Y.`date` 

type2trans表对于每个日期的记录,而在type1trans有一些日子没有记录(如当年没有交易)。

对于type1trans中没有记录的日期,则不会显示类型2日期的记录,并且该日期的总数与type1为null后的类型2相同。我怎样才能让type1在该日期返回null?

回答

1

使用RIGHT JOIN而不是LEFT JOIN(或只是交换查询中的两个子查询)。

一个有用的规则要记住difference between left and right joins是左连接包括在其侧的每一行,即使有在右边不匹配的行,而右连接,相反,包括在其正确的每一行一面。

+0

谢谢 - 我刚刚想出了交换子选项。感谢您的提示左右 – CHinAU