我有以下查询
SELECT id AS "CLIENT CODE",name AS "CLIENT NAME",(
SELECT
count(status)
FROM
campaigns
WHERE
clientid = clients.id
) AS "TOTAL CAMPAIGNS"
FROM clients
WHERE id IN
(
SELECT clientid
FROM campaigns
WHERE status IN ('L', 'P')
)
AND id NOT IN
(
SELECT clientid
FROM campaigns
WHERE status NOT IN ('L', 'P')
);
现在我有一个包含所有客户的客户表和一个包含状态列的广告系列表,其中包含L,C,P,?,X的值。现在,一个客户可以拥有一个或多个广告系列。因此,换句话说,客户可以拥有多个广告系列,其中的状态值已分配给广告系列。 L,C,P,?,X
我希望查询返回给我的是具有广告系列的客户,其状态为L和P,不仅是P而且不仅是L而是L和P.此时查询返回客户端有P或L或两者兼而有之。
答案 0 :(得分:1)
这应确保它具有两者
WHERE id IN
(
SELECT clientid
FROM campaigns
WHERE status IN ('L')
)
AND id IN
(
SELECT clientid
FROM campaigns
WHERE status IN ('P')
)
WHERE EXISTS
(
SELECT clientid
FROM campaigns
WHERE status IN ('L')
AND clientid = client.id
)
AND EXISTS
(
SELECT clientid
FROM campaigns
WHERE status IN ('P')
AND clientid = client.id
)
答案 1 :(得分:1)
我会重新写你的查询 以下方式:
SELECT id AS“CLIENT CODE”,名称为AS
“客户名称”,(
SELECT count(*) //count all FROM campaigns WHERE clientid = clients.id
)来自客户的“TOTAL CAMPAIGNS”
WHERE id IN
( 选择clientid
FROM campaigns WHERE status='L' ) AND id ( SELECT clientid FROM campaigns WHERE status='P' );
我不确定的是关于称为总体广告系列的最终变量,您想要将广告系列的总量放在哪里?如果是这样我写的是正确的,但如果你的想法是另一个,请重新解释给我,我会再次回答。