SQL QUERY, как выбрать столбец по другим ограничениям - PullRequest
0 голосов
/ 09 декабря 2018

Я использую рюкзак-контроллер для PHP-Laravel.

С помощью crudController, предоставленного рюкзаком (библиотекой), все, что мне нужно сделать, это запросить его с помощью запросов Laravel Eloquent (также возможно использование raw sql).

Чем автоматически будет распечатана библиотека Backpackсписок для меня.

Но я борюсь с этим сложным запросом.

Дело в том, что у меня есть 4 столбца,

session_id | column_id | batch | data
10         | 1         | 1     | data1
10         | 2         | 1     | data2
10         | 1         | 2     | data1*
10         | 2         | 2     | data2*

Допустим, это данныеЯ имею.Я хочу отобразить эту группировку по идентификатору сеанса, партию и упорядочение в строке по столбцу.

, поэтому запрос результата будет выглядеть примерно так:

1 :  data1   data2
2 : data1*  data2*

Если существует третий пакет с данными

session_id | column_id | batch | data
10         | 1         | 3     | data1**

Тогда под третьей партией это будет выглядеть как

3 : data1**

Я могу сделать это с кодом, но не с sql.

Любой совет был бы благодарен.

1 Ответ

0 голосов
/ 09 декабря 2018

Это выглядит как PIVOT на сервере sql.К сожалению, MySQL не имеет этой функции.

Я могу дать вам приблизительный необработанный запрос MySQL, используя GROUP_CONCAT.Предполагая, что имя вашей таблицы mytable.

SELECT 
   session_id, 
   batch, 
   GROUP_CONCAT(data ORDER BY column_id SEPARATOR ', ') AS dataList 
FROM mytable
GROUP BY session_id, batch

Затем вы можете разделить столбец с псевдонимом dataList, используя заданный разделитель (здесь я использовал ,).Вы можете изменить разделитель в соответствии с данными, содержащимися в столбце data, если хотите.

Надеюсь, это вам поможет.

...