使用JOIN通过SQL连接4个表

时间:2018-08-09 04:10:18

标签: mysql sql

需要将如下所示的四个表合并为一个表。

商人表

Date|Merchants|Date ID

用户表

Date|Users|Date ID

销售表

Date|Sales|Date ID

收入表

Date|Revenue|Date ID

日期日期ID 几乎相同。所有这些表每天都获得相应的值。但是有一天,当有新的商人时,就不需要新的用户。一天,只要有销售和收入,就不需要新的商人。

但是,当我尝试使用具有三个LEFT JOIN的常规SELECT查询时,我没有获得所有数据。

如何在没有数据的情况下(例如销售,用户等)包含所有四个表中的所有日期并 0

这似乎可以实现,但我无法做到。 :-/

2 个答案:

答案 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