【发布时间】:2012-07-17 15:36:15
【问题描述】:
我有 5 个结构相同的表。只有PAGEVISITS 字段是唯一的
即。表一:
ITEM | PAGEVISITS | Commodity
1813 50 Griddle
1851 10 Griddle
11875 100 Refrigerator
2255 25 Refrigerator
即。表2:
ITEM | PAGEVISITS | Commodity
1813 0 Griddle
1851 10 Griddle
11875 25 Refrigerator
2255 10 Refrigerator
我想让它把Commodity加起来吐出来:
table1 | table2 | Commodity
60 10 Griddle
125 35 Refrigerator
有些数据实际上是正确的,但有些数据与以下查询相差甚远:
SELECT
SUM(MT.PAGEVISITS) as table1,
SUM(CT1.PAGEVISITS) as table2,
SUM(CT2.PAGEVISITS) as table3,
SUM(CT3.PAGEVISITS) as table4,
SUM(CT4.PAGEVISITS) as table5,
(COUNT(DISTINCT MT.ITEM)) + (COUNT(DISTINCT CT1.ITEM)) + (COUNT(DISTINCT CT2.ITEM)) + (COUNT(DISTINCT CT3.ITEM)) + (COUNT(DISTINCT CT4.ITEM)) as Total,
MT.Commodity
FROM table1 as MT
LEFT JOIN table2 CT1
on MT.ITEM = CT1.ITEM
LEFT JOIN table3 CT2
on MT.ITEM = CT2.ITEM
LEFT JOIN table4 CT3
on MT.ITEM = CT3.ITEM
LEFT JOIN table5 CT4
on MT.ITEM = CT4.ITEM
GROUP BY Commodity
我认为这可能是由于错误地使用了LEFT JOIN 造成的。我也尝试过INNER JOIN,结果同样不一致。
【问题讨论】:
-
您应该使用 MySQL 中不可用的
full outer join。尝试使用left outer join和right outer join并将其与union结合使用。 -
你目前得到了什么结果?
标签: mysql left-join inner-join