как отобразить информацию для каждого уникального элемента в MySQL, объединить информацию для каждого элемента - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь перебрать каждый уникальный элемент в столбце в базе данных MySQL

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

Пример базы данных. (таблица называется "автомобили")

----------------------
Color | Model  | Year 
----------------------
Red   | Chevy  | 2014
----------------------
Blue  | Ford   | 2012
----------------------
Red   | Ford   | 2013 
----------------------
Red   | Ford   | 2014 
----------------------
Blue  | Ford   | 2012
----------------------
Blue  | Chevy  | 2012
----------------------
Red   | Ford   | 2011 
----------------------
Blue  | Chevy  | 2012
----------------------

Я ищу вывод: красный Шевроле 1 Форд 4

Синий Форд 2 Шеви 3

Приведенный ниже код будет отображать каждый цвет.

<?php
$con = mysqli_connect($servername, $username, $password, $dbname);
if (!$con) {
    die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,$dbname);

$sql="SELECT * FROM `cars`";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)) {
echo "<br />" . $row['Color'] . "<br />";
}
mysqli_close($con);
?>

Ниже будут подсчитаны различные цвета.

SELECT COUNT(DISTINCT `Color`) from `cars`;

Мне нужно запустить функцию для каждого уникального цвета.

1 Ответ

1 голос
/ 17 апреля 2019

Вы можете группировать по цвету и модели при получении результатов.

while ($row = mysqli_fetch_array($result)) {
    $colors[$row['Color']][$row['Model']][] = $row['Year'];
}

Затем выведите эти группы с количеством для каждого цвета / модели.

foreach ($colors as $color => $models) {
    echo "<h2>$color</h2>";
    foreach ($models as $model => $years) {
        echo "<p>$model: " . count($years) . "</p>";
    }
}

Я добавил несколькоНапример, базовая разметка, вы, вероятно, уже знаете, как вы хотите отформатировать результаты.

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

$distinctColorCount = count($colors);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...