故障:
无法获得输出,意味着无法获得正确的输出。
问题:
对于这个问题,需要使用Intersect运算符。所有类型的工作类型' N'需要找到并具有在代码的最后一行中列出的描述。
使用的代码:
SELECT job_id
FROM bookjobs
WHERE job_id IS 'N'
INTERSECT
SELECT job_id
FROM po_items
WHERE item_id IS
(SELECT item_id
FROM items
WHERE descr = '9KG PAPER');
预期产出:
job_id
----------
002
收到(来自CodeRunner):
没有输出。
See database schema for more details (Primary Keys are in bold).
使用了未知的DBMS。行为类似于PostgreSQL
而非mysql
。
答案 0 :(得分:0)
不要打扰INTERSECT。改为使用联接查询:
SELECT bj.job_id
FROM bookjobs bj
INNER JOIN po_items pi ON bj.job_id = pi.job_id
INNER JOIN items i ON pi.item_id = i.item_id
WHERE i.descr = '9KG PAPER';
答案 1 :(得分:0)
MySQL不支持INTERSECT
运算符。使用UNION
运算符,使用UNION
运算符时应用相同的规则。
https://www.w3schools.com/sql/sql_union.asp
使用UNION
(
SELECT job_id
FROM bookjobs
WHERE job_id = 'N'
)
UNION ALL
(
SELECT job_id
FROM po_items
WHERE item_id IN (
SELECT item_id
FROM items
WHERE descr = '9KG PAPER'
)
);
否则,你可以简单地使用INNER JOIN
,它很容易使用
SELECT
b.job_id
FROM
bookjobs AS b
INNER JOIN po_items AS pi ON pi.job_id = b.job_id
INNER JOIN items AS i ON i.item_id = pi.item_id
WHERE
b.job_id = 'N'
AND i.descr = '9KG PAPER'