查询未按预期返回结果

时间:2010-11-12 07:23:27

标签: mysql

我有以下查询

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或两者兼而有之。

2 个答案:

答案 0 :(得分:1)

这应确保它具有两者

WHERE   id IN 
        ( 
        SELECT  clientid 
        FROM    campaigns 
        WHERE   status IN ('L') 
        ) 
    AND id  IN 
        ( 
        SELECT  clientid 
        FROM    campaigns 
        WHERE   status IN ('P') 
        ) 

甚至尝试Subqueries with EXISTS

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'


    );

我不确定的是关于称为总体广告系列的最终变量,您想要将广告系列的总量放在哪里?如果是这样我写的是正确的,但如果你的想法是另一个,请重新解释给我,我会再次回答。