查询排除

时间:2018-04-09 22:56:28

标签: mysql

我试图写一个查询,找到所有没有公司订单的销售人员名称。

我的查询是:

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

1 个答案:

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