我认为正确的外部联接会解决这个问题

时间:2011-06-18 22:03:08

标签: sql sqlite

我是一个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不允许这样做。

有关解决方法的任何想法,以便我可以找出哪个推销员没有出售任何东西?

2 个答案:

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