我对这段代码提出了一个小问题:
WITH cps AS
(
SELECT
cp.id_campaign, ean.equipment
FROM
tbl_campaign cp
INNER JOIN
tbl_equip ean ON (cp.id_campaign = ean.id_campaign)
)
SELECT
COUNT(cp.id_campaign)
FROM
cps cp
INNER JOIN
tbl_camp_associates assoc ON (cp.id_campaign = assoc.id_campaign_associate)
WHERE
EXISTS (SELECT * FROM tbl_already_processed_campaign cal_cp
WHERE ID_message = 15 -- campaign processed succeeded
AND cp.id_campaign = cal_cp.id_campaign);
此查询的目的是验证设备是否在另一个未关联的广告系列中获得报酬。
谢谢你们!
编辑:tbl_campaign
表包含有关广告系列的所有信息,例如ID,设备,日期,重量。
tbl_equip
表格中包含有关设备,身份证,imei,活动及设备和价格的所有信息。
tbl_camp_associates
表格。它有一个rowID,广告系列ID,关联广告系列ID。例如:广告系列44有2个关联的广告系列32和33.这会产生此表中的2条记录。
EG。活动44与设备1和2相关联的活动(32和33)。成功!它在表tbl_already_processed_campaign
上使用正确的消息(id_message = 15)
EG2:广告系列45与设备1及相关广告系列(30和31)必须返回错误,因为它是在广告系列44中使用不同的相关广告系列获得报酬。
答案 0 :(得分:0)
EXISTS 条件与子查询结合使用,如果子查询返回至少一行,则认为满足该条件。在这种情况下,如果子查询
select * from tbl_already_processed_campaign cal_cp where ID_message = 15 AND cp.id_campaign= cal_cp.id_campaign
返回至少一行,EXISTS子句将评估为true并且将满足条件。