Mysql счетчик столбца подзапроса с - PullRequest
0 голосов
/ 05 января 2019

У меня есть таблица, которая называется раздавать, и у каждой раздачи могут быть участники. Я пытаюсь получить количество раздач без победителей. Таблица участников содержит поле победителя, равное 1 или 0.

Мои данные выглядят так:

Таблица бесплатных подарков

| id | name       |
|----|------------|
| 1  | Giveaway 1 |
| 2  | Giveaway 2 |

Таблица участников

| id | giveaway_id|winner|
|----|------------|------|
| 1  | 1          | 0    |
| 2  | 1          | 0    |
| 3  | 2          | 0    |

Это мой запрос:

SELECT (SELECT COUNT(id) FROM contestants c 
        WHERE c.giveaway_id = g.id AND winner = 1) as winners
FROM giveaways g
having winners =  0

Прямо сейчас это вернет несколько строк, я хочу получить количество строк. Я попытался обернуть count () вокруг подзапроса winners, но это не сработало.

В приведенном выше примере это будет возвращено:

Results
| winners |
|---------|
| 0       |
| 0       |

Я хочу только количество строк, которое будет 2.

Какой подход лучше? Thx

1 Ответ

0 голосов
/ 05 января 2019

Я пытаюсь получить количество раздач без победителей.

Используйте NOT EXISTS с коррелированным подзапросом:

SELECT
    COUNT(*)
FROM
    giveaways g
WHERE NOT EXISTS (
    SELECT 1 FROM contestants WHERE giveaway_id = g.id AND winner = 1
)

Подзапрос обеспечивает отсутствие выигравшего участника для каждой раздачи при подсчете.

...