我是一个SQL新手,但已经倾向于陷入困境。
我有一个名为Sales的表,其中包含与销售相关的自然字段,包括名为Salesman的字段。
我还有一个名为Salesmen的表,其中只包含销售人员名称。
我想要一份报告,计算每位销售员的所有销售额,包括由于销售不足而未在销售表中提及的每位销售员的结果。
以下代码的作用除了表现不佳的推销员之外没有显示,只是实际售卖过的人。
SELECT salesman,
count(*) as nmbr
FROM Sales
JOIN Salesmen
ON Sales.salesman = Salesmen.name
GROUP BY Salesmen.name
order by nmbr;
我相信正确的外部联接会解决这个问题,除非我使用的SQLITE不允许这样做。
有关解决方法的任何想法,以便我可以找出哪个推销员没有出售任何东西?
答案 0 :(得分:5)
SQLite是否支持LEFT外连接?
SELECT salesmen.name
count(sales.salesman) as nmbr
FROM Salesmen
LEFT JOIN Sales ON Sales.salesman = Salesmen.name
GROUP BY Salesmen.name
ORDER BY nmbr;
答案 1 :(得分:2)
根据SQLite,你可以做LEFT OUTER JOIN而不是RIGHT OUTER JOIN。那么如何只是在查询中反转表的顺序,并执行LEFTy?