我试图写一个查询,找到所有没有公司订单的销售人员名称。
我的查询是:
SELECT Name
FROM Salesperson
JOIN Orders ON orders.salesperson_id = Salesperson.ID
WHERE cust_id <> 4
GROUP BY Name;
虽然这有点奏效,但我觉得我应该更明确。如果你能指导我到我错的地方,我会很感激你的帮助。我期待看到的是......
Abe
Chris
Dan
Joe
表格是:
业务员
ID Name Age Salary
1 Abe 61 140000
2 Bob 34 44000
5 Chris 34 40000
7 Dan 41 52000
8 Ken 57 115000
11 Joe 38 38000
客户
ID Name City Industry
4 Samsonic plesant J
6 Panasung oaktown J
7 Samony Jackson B
9 Orange Jackson B
订单
Number Date cust_id salesperson_id amount
10 1996-08-02 4 2 540
20 1999-01-30 4 8 1800
30 1995-07-14 9 1 460
40 1998-01-29 7 2 2400
50 1998-02-03 6 7 600
60 1998-03-02 6 7 720
70 1998-05-06 9 7 150
答案 0 :(得分:1)
将这两个表连接在一起时,只会显示两个表中显示的ID,其cust_id
值不是4,因为您的联接不是OUTER JOIN
,即{{1} }。
然后,当您说明ids = 1, 2, 7
时,您会得到:
SELECT Name
(Abe // id = 1
Bob // id = 2
Dan // id = 7
语句在这种情况下完全无用,因为您在GROUP BY
中未使用任何COUNT(...)
,SUM(...)
或类似内容
如果您想避免重复,可以使用SELECT
而不是GROUP BY
替换SELECT DISTINCT
语句。
从您期望的结果来看,我想您要排除使用SELECT
下订单的所有SalesPerson的ID。
这应该顺利进行:
cust_id = 4