SQL查询 - 以下如何工作?

时间:2015-10-17 18:57:06

标签: mysql sql

Tables

问题:查找所有与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

2 个答案:

答案 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");