jefryjeyjonson
@jefryjeyjonson
Юный программист

Как сделать строки одной таблицы, столбцами при запросе SELECT?

СУБД mysql
Табличка city имеет вид
id | city | active

Запрос
SELECT wt.type, e.id_city, COUNT(e.id) FROM `employees` e 
LEFT JOIN employees_work_type ewt ON ewt.id_user=e.id 
LEFT JOIN work_type wt ON ewt.id_work_type=wt.id
LEFT JOIN city ON city.id=e.id_city 
WHERE status=1 AND exclusive IS NOT NULL AND wt.excl_type IS NOT NULL 
GROUP BY e.id_city, wt.id


Результат
5e56a8504e6af874863533.jpeg


Мне нужно чтоб выдача была внутри приложения результат будет отборажаться в такой форме
Направление | кол-во в городe_1 | кол-во в городe_2 |
Прикурить авто | 5 | 1 |

Подскажите при помощи какой функции можно это реализовать, или я вообще ерунду творю и запрос как сейчас корректен и его можно юзать
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Такое можно сделать, но если у вас такая потребность, то явно вы используете реляционную базу не по назначению.
Так как кол-во городов может быть разное, то и число колонок в результатах запроса будет разное.
Легко ли будет обработать такие результаты в приложении?

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

<?php
$table = [];
$result = mysqli_query("SELECT type, id_city, count ...");
while($row = $result->fetch_assoc())
{
    $table[$row['type']][$row['city']] = $row['count'];
}

print_r($table);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 160 000 ₽
Blogman Санкт-Петербург
от 90 000 до 160 000 ₽
04 апр. 2020, в 22:39
15000 руб./за проект
04 апр. 2020, в 21:01
35000 руб./за проект