количество подписчиков, которые подписались на все журналы (3 разных журнала) - PullRequest
0 голосов
/ 27 апреля 2011
SUBSCRIPTIONS (SUB_ID, MAG_ID, RENEW_DATE, CANCEL_DATE, PERIOD)

Это то, что я пытался, но все, что я получаю, это счет 0

SELECT COUNT(DISTINCT SUB_ID)
FROM DVD_SUBSCRIPTIONS
WHERE MAG_ID = 1
AND MAG_ID = 2
AND MAG_ID = 3;


COUNT(DISTINCTSUB_ID)
 ---------------------
              0

Помощь плззз

Ответы [ 2 ]

5 голосов
/ 27 апреля 2011

Следующее должно работать, внутренний SELECT вернет подписчиков, которые подписались на все 3 магазина:

SELECT COUNT(*) 
  FROM (SELECT sub_id, COUNT(distinct mag_id) 
          FROM dvd_subscriptions 
         WHERE mag_id IN (1, 2, 3) 
         GROUP BY sub_id
        HAVING COUNT(distinct mag_id) = 3)
1 голос
/ 27 апреля 2011

Дейв, вы не можете использовать AND таким образом, можете ли вы думать о значении, равном 1 и одновременно 2 и 3? Вы должны использовать предложение IN или OR, но оно даст вам данные, где mag_id = 1 или mag_id = 2 или mag_id = 3. Если вы хотите, чтобы все они использовали предложение IN, как в Vincent ответить.

проверьте эти ссылки, чтобы узнать больше: SQL-И-ИЛИ , SQL-IN , SQL-HAVING

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...