Mysql 在编写列出所有未销售给特定客户的销售人员的查询时遇到问题
我成功地编写了一个查询,该查询列出了确实向特定客户销售产品的销售人员,但没有列出那些没有向特定客户销售产品的销售人员。我怀疑这是因为销售给特定客户的销售人员也销售给其他客户Mysql 在编写列出所有未销售给特定客户的销售人员的查询时遇到问题,mysql,sql,Mysql,Sql,我成功地编写了一个查询,该查询列出了确实向特定客户销售产品的销售人员,但没有列出那些没有向特定客户销售产品的销售人员。我怀疑这是因为销售给特定客户的销售人员也销售给其他客户 select a.name from salesperson a inner join orders b on a.salesperson_id = b.salesperson_id where cust_id="4"; 我在想,像这样修改同一个查询可以达到以下目的: .... a.salesperson_i
select a.name from salesperson a inner join orders b on
a.salesperson_id = b.salesperson_id where cust_id="4";
我在想,像这样修改同一个查询可以达到以下目的:
.... a.salesperson_id <> b.salesperson_id where cust_id="4";
任何帮助都将不胜感激~Alpinehyker您可以这样做:
select a.name from salesperson a
left join orders b on a.salesperson_id = b.salesperson_id and b.cust_id="4"
where b.Number is null
因此,将所有Saleperson转到customer4
的订单,只返回没有此类订单的行
我假设Number
是Orders
的主键,或者至少notnull
这可能会起作用
SELECT
s.*
FROM `Salesperson` AS s
LEFT JOIN `Orders` AS o ON o.`salesperson_id` = s.`salesperson_ID`
WHERE
o.`cust_id` NOT IN (4)
GROUP BY s.`salesperson_ID`;
回答你的第二个问题:
SELECT
COUNT(*) AS num_of_orders
,s.`Name`
FROM `Salesperson` AS s
LEFT JOIN `Orders` AS o ON o.`salesperson_id` = s.`salesperson_ID`
GROUP BY s.`salesperson_ID`
HAVING num_of_orders >= 2;
…还有第三个问题。(假设您已准备好您的highAchiever
表格)
所有未销售给客户的销售人员\u ID 4:
SELECT s.Name FROM Salesperson AS s
LEFT JOIN Orders AS o
ON s.salesperson_ID = o.salesperson_ID
WHERE o.customer_ID <> 4
GROUP BY o.salesperson_ID;
从Salesperson中选择s.Name作为s
左连接命令为o
在s.salesperson_ID=o.salesperson_ID上
其中o.customer_ID 4
按o.销售人员编号分组;
我不这么认为-这将为您提供所有非针对客户4的订单的销售人员-它将仅排除仅向客户4销售(或根本没有销售)的销售人员。此外,您将获得重复的行:每个订单一行,而不是每个销售人员一行。这很有效!非常感谢。我还有几个问题很难回答。也许你也能帮上忙?问题2。。。2.有2个或更多订单的销售人员的姓名3。编写一条SQL语句,将行插入名为highAchiever(姓名、年龄)的表中,其中销售人员必须具有100000或更高的工资才能包含在表中。非常感谢。@marcin非常感谢您的帮助!我尝试的第二个问题的查询语法与您提供的语法非常接近,但我就是无法正确理解。至于第三个问题。。。我想得太多了。谢谢你,我很感谢你的帮助和专业知识!
INSERT INTO `highAchiever`
(`Name`,`Age`)
SELECT
`Name`
,`Age`
FROM `Salesperson`
WHERE
`Salary` >= 100000;
SELECT s.Name FROM Salesperson AS s
LEFT JOIN Orders AS o
ON s.salesperson_ID = o.salesperson_ID
WHERE o.customer_ID <> 4
GROUP BY o.salesperson_ID;