2013-11-26 15 views
1

真的很抱歉向您的专家询问我在做什么这个SQL语句有问题。另一个带有SQL语句的简单查询(来自某人刚刚学习SQL)

我所要做的就是列出SalesExec表中的销售人员,并显示新表格中新车的数量以及该销售员销售的旧表中的旧车数量。

SELECT SALESEXEC.SALESEXECNAME 
COUNT(NewSALES.CHASSIS) AS newCOUNT 
COUNT(UsedSales.CHASSIS) AS usedCOUNT 
FROM SALESEXEC.csv SALESEXEC, NewSALES.csv NewSALES, UsedSALES.csv UsedSALES 
WHERE SALESEXEC.ID = NewSALES.SALESEXECID And SALESEXEC.ID = UsedSALES.SALESEXECID 
GROUP BY SALESEXEC.SALESEXECNAME 

这种说法似乎返回相同数量的同时为newCOUNT和UsedCount的,我甚至不知道这个数字从何而来?

再一次,我真的很感谢这方面的帮助。在此先感谢

史蒂夫

+0

这不应该是困难的,但你必须张贴所有您的架构 –

+0

的问题是在你连接表的方式 - 基本上该查询返回所有更多钞票组合对于给定的SALESEXECNAME,NewSALES.CHASSIS和UsedSales.CHASSIS,这是你得到的数字。考虑将此查询划分为两个不同的表 - 如果CHASSIS字段是唯一的,则在COUNT子句中添加DISTINCT,例如:COUNT(DISTINCT NewSALES.CHASSIS)' – Mikhail

回答

1
SELECT SALESEXEC.SALESEXECNAME, newCOUNT, usedCOUNT 
FROM SALESEXEC.csv SALESEXEC 
JOIN (
    SELECT SALESEXECID, COUNT(CHASSIS) AS newCOUNT 
    FROM NewSALES.csv 
    GROUP BY SALESEXECID 
) NewSALES ON SALESEXEC.ID = NewSALES.SALESEXECID 
JOIN (
    SELECT SALESEXECID, COUNT(CHASSIS) AS usedCOUNT 
    FROM UsedSALES.csv 
    GROUP BY SALESEXECID 
) UsedSALES ON SALESEXEC.ID = UsedSALES.SALESEXECID 
+0

感谢TI - 完美! –