需要将如下所示的四个表合并为一个表。
商人表
Date|Merchants|Date ID
用户表
Date|Users|Date ID
销售表
Date|Sales|Date ID
收入表
Date|Revenue|Date ID
日期和日期ID 几乎相同。所有这些表每天都获得相应的值。但是有一天,当有新的商人时,就不需要新的用户。一天,只要有销售和收入,就不需要新的商人。
但是,当我尝试使用具有三个LEFT JOIN的常规SELECT查询时,我没有获得所有数据。
如何在没有数据的情况下(例如销售,用户等)包含所有四个表中的所有日期并 0 ?
这似乎可以实现,但我无法做到。 :-/
答案 0 :(得分:1)
您可以将它们与所有日期ID一起加入到子查询中。
SELECT
s.Sales,
m.Merchants,
u.Users,
r.Revenue,
f.`Date ID`
FROM
(
SELECT `Date ID` FROM Sales UNION
SELECT `Date ID` FROM Merchants UNION
SELECT `Date ID` FROM Users UNION
SELECT `Date ID` FROM Revenue
) f
LEFT JOIN Sales s ON s.`Date ID` = f.`Date ID`
LEFT JOIN Merchants m ON m.`Date ID` = f.`Date ID`
LEFT JOIN Users u ON u.`Date ID` = f.`Date ID`
LEFT JOIN Revenue r ON r.`Date ID` = f.`Date ID`
答案 1 :(得分:0)
您尝试以下方式
select t.*,m.Merchants,r.Revenue from
(
select u.dateID,s.Sales,u.Users form Users u inner join Sales s on
u.dateID=s.dateID
) as t left join Merchants m ON t.dateid= m.Dateid
left join Revenue r on t.dateid=r.dateid