MySQL SELECT столбец COUNT (имя) ГДЕ условие GROUP BY столбец? - PullRequest
3 голосов
/ 27 августа 2011

Эй, вот оператор SQL, который я использую

$sql = "SELECT number, COUNT(name) FROM people WHERE id='$id' GROUP BY number";  
$result = mysql_query($sql);

while($row = mysql_fetch_array($result)){
$statarray['stat'.$i] = $row['COUNT(name)'];
$i++; }

В столбце чисел хранится 0, 1, 2 или 3 для каждого имени, поэтому массив возвращается с общим количеством имен для каждого номера ... что отлично работает.

Единственная проблема заключается в том, что если во всех именах хранится номер 1, моя запись массива 'stat0' не сообщает мне, сколько существует 0, потому что оно заменено числом 1 (это потому, что в массиве нет нулей, поэтому первый вывод равен 1с) ..

Как мне узнать, сколько имен имеют 0s 1s 2s и 3s в их числовом столбце, в том числе, когда их нет? .. Заранее спасибо.

1 Ответ

3 голосов
/ 27 августа 2011
SELECT  numbers.number ,
        COUNT(name)
FROM    ( SELECT    0 AS number
          UNION ALL
          SELECT    1
          UNION ALL
          SELECT    2
          UNION ALL
          SELECT    3
        ) numbers
        LEFT JOIN people ON people.number = numbers.number AND id='$id' 
GROUP BY numbers.number

Или, если у вас есть таблица постоянных чисел согласно комментариям

SELECT  numbers.number ,
        COUNT(name)
FROM    numbers
        LEFT JOIN people ON people.number = numbers.number
                            AND id = '$id'
WHERE   numbers.number BETWEEN 0 AND 3
GROUP BY numbers.number
...