如何解决如何“加入”但在MySQL的表中将它们分开?
我有两个桌子。表员工:
OrderID (orders) CustomerID (orders) EmployeeID (orders)
10248 90 5
10278 45 1
10238 47 1
和表顺序:
EmployeeID Number of Orders
1 2
我删除了完整的列表,因为它有数百行。
在雇员表中,雇员ID可以唯一地标识雇员,这意味着它不会在雇员表中重复。但是,在“订单”表中,employeeID可以重复多次,因为员工可以出售很多订单的帮助。
无论如何,我可以在这里看到在Orders表中,一个employeeID将重复几次,这意味着我需要在我的MySQL代码中的某个地方使用COUNT(EmployeeID)> = 2。
这就是我想要的:
SELECT EmployeeID,COUNT(EmployeeID) FROM
employees A inner join
orders B
ON (A.EmployeeID=B.EmployeeID)
WHERE COUNT(B.EmployeeID >=2)
如您所见,EmployeeID在“订单”表中显示两次。因此他卖了2件商品,并且链接到他的1个“员工ID”。
这就是我尝试过的:
{{1}}
这是输出:
错误:字段列表中的列“ EmployeeID”不明确-错误代码1052
我不确定在这种情况下如何获得此结果。
解决方法
您要构建属于同一员工的订单组,然后根据每个组的行数进行筛选。为此,您可以使用group by
和having
:
select employeeid,count(*) cnt_orders
from employees e
inner join orders o using(employeeid)
group by employeeid
having count(*) >= 2
请注意,此处不需要联接。您可以直接从订单表中获得所需的结果:
select employeeid,count(*) cnt_orders
from orders
group by employeeid
having count(*) >= 2
,
无需加入if (intersects.length > 0) {
SELECTED = intersects[ 0 ].object;
control.attach(SELECTED);
scene.add(control);
} else {
control.detach(); // <- THIS IS CORRECT
scene.remove(control);
}
表,您可以从employees
获取员工ID。仅当您还需要orders
表中的其他信息(例如其名称)时,才需要加入。
您需要employee
才能为每位员工计数。
GROUP BY employeeID
不应放在>= 2
函数中,要比较结果。
您需要使用COUNT()
而不是HAVING
。 WHERE
用于选择要在汇总之前处理 的行。
除非应该从计数中排除列的空值,否则应使用WHERE
而不是COUNT(*)
。
如果为COUNT(columnName)
结果指定别名,则可以在COUNT(*)
子句中使用该别名,而不用重述函数。
HAVING
出现关于歧义列的错误的原因是因为两个表都有SELECT EmployeeID,COUNT(*) AS number_of_orders
FROM orders B
GROUP BY EmployeeID
HAVING number_of_orders >= 2
列。就像在EmployeeID
子句中一样,在SELECT
列表中,您需要指定A.EmployeeID
或B.EmployeeID
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。