以下代码给出了错误:
字段列表中的列'id'不明确。
我将productr2011
添加到它,它开始这样做了。如果我从查询中取出product2011
,那么它可以正常工作。
SELECT id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
FROM productr
WHERE itemRUDate >= '2012/03/03' AND itemRUDate <= '2012/03/03'
GROUP BY itemName
UNION
SELECT id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
FROM productr2010, productr2011
WHERE itemRUDate >= '2012/03/03' AND itemRUDate <= '2012/03/03'
GROUP BY itemName
ORDER BY SumOf DESC;
为什么它仅适用于product2010
,而不适用于product2010, product2011
?
更新
我只是想将旧档案记录与搜索结合起来。提示为什么我要添加2010年和2011年的所有数据(通常查询日期应为2011年而不是2012年):o)
答案 0 :(得分:5)
如果productr2010
和productr2011
都有id
字段,那么您必须正式确定要选择的字段:
SELECT productr2010.id
即使你这样做,我怀疑你的查询是否在正确的轨道上。你为什么要加入这两个表?由于这看起来像表历史,我猜你应该添加另一个UNION
子句,以“统一”productr2010
和productr2011
,而不是加入它们。换句话说,做这样的事情:
SELECT ...
FROM productr
...
UNION
SELECT ...
FROM productr2010
...
UNION
SELECT ...
FROM productr2011
...
即便如此,我认为你想要的查询是这样的(防止三个表中每itemName
个重复的条目):
SELECT id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
FROM (
SELECT id, itemName, itemRUDate, itemsSold FROM productr UNION ALL
SELECT id, itemName, itemRUDate, itemsSold FROM productr2011 UNION ALL
SELECT id, itemName, itemRUDate, itemsSold FROM productr2010
) AS subquery
WHERE itemRUDate >= '2012/03/03' AND itemRUDate <= '2012/03/03'
GROUP BY itemName
ORDER BY Sum(itemsSold) DESC;
我仍然有点困惑为什么你想要从你的分组子查询中选择任意id
和itemRUDate
值,但那将是另一个问题......
答案 1 :(得分:1)
您需要指定id列来自哪个表。
或者:
SELECT productr2010.id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
OR
SELECT productr2011.id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
答案 2 :(得分:1)
您确定要在product2010
和product2011
之间进行联接吗?我不确定你的确切要求,但这可能是你在寻找的东西:
SELECT id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
FROM productr
WHERE itemRUDate >= '2012/03/03' AND itemRUDate <= '2012/03/03'
GROUP BY itemName
UNION
SELECT id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
FROM productr2010
WHERE itemRUDate >= '2012/03/03' AND itemRUDate <= '2012/03/03'
GROUP BY itemName
UNION
SELECT id, itemName, itemRUDate, Sum(itemsSold) AS SumOf
FROM productr2011
WHERE itemRUDate >= '2012/03/03' AND itemRUDate <= '2012/03/03'
GROUP BY itemName
ORDER BY SumOf DESC;