我需要返回广告表中不在TVRadio表中的所有acID

问题描述 投票:-1回答:2

我想在TVRadio电台中返回不带adID的记录,这意味着只有Web和杂志。对于上下文,这是我的 - ER图

这是我到目前为止的查询,

SELECT Employees.employeeID, Employees.firstName, Employees.lastName, CampaignEmployees.campaignID
FROM Employees
LEFT JOIN CampaignEmployees
ON Employees.employeeID = CampaignEmployees.employeeID
LEFT JOIN Adverts
ON CampaignEmployees.campaignID = Adverts.campaignID
LEFT JOIN TVRadio
ON Adverts.adID = TVRadio.adID

这将返回我需要的所有未经过滤的数据,我的问题是我似乎无法使条件正常工作。我试过WHERE NOT EXISTS( SELECT TVRadio.adID FROM TVRadio WHERE TVRadio.adID = Adverts.adID);但它什么也没有回复。

广告和TVRadio表 - 图像

sql
2个回答
0
投票

如果您在插入数据时,广告系列中的campaignID与广告中的CampaignID不匹配。广告系列中的CampaignID为1,91,16,77,34广告中的campaignID为25079332,63531211,15592835,99403438等,您似乎在广告表中以错误的顺序插入数据。

一旦你更正了数据,这个查询(你几乎就在那里)就可以了。

SELECT Employees.employeeID, Employees.firstName, Employees.lastName, CampaignEmployees.campaignID
FROM Employees
JOIN CampaignEmployees ON Employees.employeeID = 
CampaignEmployees.employeeID
LEFT JOIN Adverts ON CampaignEmployees.campaignID = Adverts.campaignID
LEFT JOIN TVRadio ON Adverts.adID = TVRadio.adID
WHERE TVRadio.adID IS NULL

0
投票

既然你在LEFTAdverts之间进行TVRadio连接,你需要添加:

WHERE TVRadio.adID IS NULL

如果TVRadio.adID IS NULL这意味着Adverts.adID没有匹配的TVRadio.adID编辑: 你在表Adverts中有一个严重的问题。 您为列campaignID分配了错误的值(我认为它们是clientID的值):

CREATE TABLE Adverts (
adID INT(5),
campaignID INT(3),
clientID INT(3),
releaseDate DATE,
PRIMARY KEY (adID)
);

INSERT INTO Adverts 
VALUES (58224,25079332,1,'2019-08-12'),
(99534,63531211,91,'2019-04-20'),
(55755,15592835,16,'2019-09-08'),
(73418,99403438,77,'2019-05-30'),
(13463,79926376,34,'2019-06-26'),
(65660,47294923,1,'2019-07-19'),
(86926,43530233,91,'2019-10-10'),
(39925,14570146,16,'2019-12-15'),
(63452,90400859,77,'2019-02-28'),
(10124,63547321,34,'2019-08-24'),
(45537,25079332,1,'2019-03-11'),
(16232,15592835,91,'2019-04-30'),
(53040,79926376,16,'2019-01-02'),
(46791,43530233,77,'2019-09-24'),
(91974,90400859,34,'2019-04-16');

修复方法是重新排列列,如下所示:

CREATE TABLE Adverts (
adID INT(5),
clientID INT(3),
campaignID INT(3),
releaseDate DATE,
PRIMARY KEY (adID)
);
© www.soinside.com 2019 - 2024. All rights reserved.