GROUP BY один столбец и COUNT два столбца - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно сгруппировать по идентификатору поставщика и подсчитать количество, которое не было продано или провалилось, а также подсчитать проданную сумму для этого поставщика.

|---vendor id---|---failed---|---sold---|
|    1234       |   FAILED   |          |
|    9876       |   FAILED   |          |
|    1234       |   GRADE A  |   sold   |
|    1234       |   GRADE A  |   sold   |
|    9876       |   GRADE A  |   sold   |

Я пробовал бесчисленное количество запросов, которые нашел наи мне просто не повезло.

$sql = 'SELECT *,sold,COUNT(sold),COUNT(*) FROM wp_drives WHERE sold != "sold" AND grade != "Grade FAIL" GROUP BY vendor_id';
while($row = mysqli_fetch_assoc($result)) {
    echo "<tr>";
    echo "<td style='text-align: center;'>" .$row['vendor_id']. "</td>";
    echo "<td style='text-align: center;'><span class='qty'>".$row['COUNT(*)']."</span></td>";
    echo "<td style='text-align: center;'>" .$row['capacity']. "</td>";
    echo "<td style='text-align: center;'>" .$row['form_factor']. "</td>";
    echo "<td style='text-align: center;'>" .$row['rpm']. "</td>";
    echo "<td style='text-align: center;'><span class='sold'>".$row['COUNT(sold)']."</span></td>";
    echo "</tr>";
}

В моей таблице у меня сгруппированы продавцы с количеством всех жестких дисков в этой группе, а затем некоторые из них проданы и должны показать, сколько было продано в этой группе.Сейчас он просто возвращает продаваемому то же значение, что и кол-во.

1 Ответ

0 голосов
/ 15 мая 2019

вы не можете использовать * при группировании данных, столбец, который вы группируете, должен быть частью критериев выбора.попробуйте это

SELECT vendor_id,COUNT(*) as count 
FROM wp_drives 
WHERE sold != 'sold' AND grade != 'Grade FAIL' 
GROUP BY vendor_id
...