问题:查找所有与Samsonic订购的销售人员的姓名。
SELECT salesperson.ID FROM test.salesperson
where salesperson.ID IN (Select salesperson.ID from test.orders
inner join test.customer
ON customer.ID = orders.cust_id
AND customer.CustName = "Samsonic");
我想知道上述查询是如何工作的? 它列出了salesperson表中的所有ID。
令人困惑的是它应该只选择订单表中的那些销售员ID(因为我从订单表中选择它:从test.orders中选择salesperson.ID)或者它应该抛出错误,因为没有coloumn订单表中的命名ID。
注意:我正在使用MySQL
答案 0 :(得分:1)
我认为问题出在这一行:
where salesperson.ID IN (Select salesperson.ID from test.orders
您只是再次从salesperson
表中获取ID。应该是:
where salesperson.ID IN (Select salesperson_id from test.orders
(salesperson_id
)<{1}}上的列orders
答案 1 :(得分:0)
您的查询有几处错误。 salesperson.ID
应为salesperson_id
(已经告知)。除此之外,没有cust_name
。它应该是customer.name
。
现在,如果您只想要salesperson id
,那么就不会使用外部选择。这应该有用。
Select salesperson_ID from test.orders
inner join test.customer
ON customer.ID = orders.cust_id
AND customer.Name = "Samsonic"
但如果您需要客户的客户名称和/或其他详细信息,请使用更正的查询。
SELECT salesperson.ID, salesperson.name FROM test.salesperson
where salesperson.ID IN (Select salesperson_ID from test.orders
inner join test.customer
ON customer.ID = orders.cust_id
AND customer.Name = "Samsonic");