【发布时间】:2019-05-09 12:32:42
【问题描述】:
我正在尝试理解相关子查询,但无法理解这个问题。我需要列出所有具有不止一个不同供应商的 POS 数据的 bookjobs 信息。
我必须在 job_id 上使用相关子查询。 我不能使用 group by 或两者之一。
SELECT *
FROM bookjobs a
WHERE EXISTS
(SELECT DISTINCT vendor_id
FROM pos b
WHERE b.job_id = a.job_id);
job_id cust_id job_date descr jobtype
---------- ---------- ---------- ---------- ----------
002 E05 1990-03-03 BUS REPORT N
004 A01 1990-01-01 PAMPHLETS R
005 A01 1989-11-23 GOVT N
006 D04 1988-07-04 CAMPAIGN H
我也不能用这个来回答这个问题:
SELECT *
FROM bookjobs a
WHERE EXISTS
(SELECT job_id
FROM pos b
WHERE b.job_id = a.job_id
GROUP BY job_id
HAVING COUNT(job_id) > 1 );
job_id cust_id job_date descr jobtype
---------- ---------- ---------- ---------- ----------
002 E05 1990-03-03 BUS REPORT N
004 A01 1990-01-01 PAMPHLETS R
005 A01 1989-11-23 GOVT N
架构
CREATE TABLE pos (
po_id CHAR(3) NOT NULL,
job_id CHAR(3) NOT NULL,
po_date DATE,
vendor_id CHAR(3),
PRIMARY KEY (po_id),
FOREIGN KEY (job_id) REFERENCES bookjobs(job_id)
CREATE TABLE bookjobs (
job_id CHAR(3) NOT NULL,
cust_id CHAR(3) NOT NULL,
job_date DATE,
descr CHAR(10),
jobtype CHAR(1),
PRIMARY KEY (job_id),
FOREIGN KEY (cust_id) REFERENCES publishers(cust_id)
预期的结果应该是:
job_id cust_id job_date descr jobtype
---------- ---------- ---------- ---------- ----------
002 E05 1990-03-03 BUS REPORT N
004 A01 1990-01-01 PAMPHLETS R
005 A01 1989-11-23 GOVT N
【问题讨论】:
-
a 和 b 是糟糕的表别名。选择一些有意义的东西,例如
bjbookjobs. -
我必须在 job_id 上使用相关子查询。我不能使用 group by 或两者之一。 ...由于任务或您的偏好?
-
这不是一个作业本身更像是帮助理解 SQL 的问题。