Проблема запроса Postgres, необходимо выбрать уникальные значения - PullRequest
1 голос
/ 11 ноября 2010

Привет, у меня есть следующий запрос, но он не совсем делает то, что я ожидаю, что он сделает

SELECT DISTINCT(c.id) AS "CLIENT CODE",c.name AS "CLIENT NAME", count(cmp.id) as "NUMBER OF CAMPAIGNS ON LIVE AND PENDING" FROM clients AS c ,campaigns AS cmp WHERE cmp.clientid = c.id AND cmp.status NOT IN('S','C','X','?') GROUP BY c.name,c.id ORDER BY c.name;

Я хочу добиться следующего.У меня есть таблица клиентов и таблица кампаний в postgres.Клиенты имеют кампании, поэтому один клиент может иметь 100 кампаний.У клиента могут быть кампании со статусом L, C, X или только L, C, P.Есть только L, P, C, X, S,?для статусов.Теперь я хочу, чтобы запрос возвращал только клиентов, у которых есть кампании со статусами L и P, а не другие.

Таким образом, другими словами, должны возвращаться только клиенты со статусами L и P, если у клиента есть X, C и L и P, это не должно быть возвращено.

Надеюсь, что это имеет смысл и возможно

1 Ответ

4 голосов
/ 11 ноября 2010
SELECT  *
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')
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...