我在MySQL中有两个表:
表1 -工作单
| 识别码|数量|
| - -|- -|
| 一个|2个|
| 2个|一个|
表2 -工作单中的项目
| 识别码|工单|
| - -|- -|
| 一个|一个|
| 2个|一个|
| 三个|2个|
我有一个疑问:
SELECT WORKORDERS.ID
, WORKORDERS.QUANTITY AS NOMINAL_QTY
, COUNT(ITEMSINWORKORDERS.WORKORDER) AS ENTERED_QTY
FROM WORKORDERS JOIN ITEMSINWORKORDERS ON
ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
WHERE WORKORDERS.QUANTITY >
( SELECT COUNT(ITEMSINWORKORDERS.WORKORDER )
FROM WORKORDERS INNER JOIN ITEMSINWORKORDERS ON
ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
)
最初,我的语句中有一个左外连接,所以我把它切换到内连接,希望得到一个空集。当没有任何缺少条目的工作单时,我如何使它返回一个空集呢?
它用于查找所有工作单,其中未输入所有物料,并且在WORKORDERS表中输入的名义数量大于与该工作单对应的ITEMSINWORKORDERS中的记录数。我希望返回一个 * 空集 *。但我得到了
| 识别码|标称_数量|已输入_数量|
| - -|- -|- -|
| 空值|空值|第0页|
最初,我的语句中有一个左外部连接,所以我将其切换为内部连接,希望得到一个空集。
- 附录:* 我尝试使用NULLIF自己解决这个问题,因此:
SELECT WORKORDERS.ID
, WORKORDERS.QUANTITY AS NOMINAL_QTY
, NULLIF(COUNT(ITEMSINWORKORDERS.WORKORDER), 0) AS ENTERED_QTY
FROM WORKORDERS JOIN ITEMSINWORKORDERS ON
ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
WHERE WORKORDERS.QUANTITY >
( SELECT COUNT( ITEMSINWORKORDERS.WORKORDER )
FROM WORKORDERS INNER JOIN ITEMSINWORKORDERS ON
ITEMSINWORKORDERS.WORKORDER = WORKORDERS.ID
)
我得到的是令人沮丧的:
| 识别码|标称_数量|已输入_数量|
| - -|- -|- -|
| 空值|空值|空值|
1条答案
按热度按时间bis0qfac1#
我不知道你在说什么,因为你的字典里没有争吵。
但要使计数工作,您需要
GROUP BY
第一章