SQL-ЗАПРОС, как выбрать столбец по другим ограничениям

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

С crudController, предоставленным рюкзаком (библиотекой), все, что мне нужно сделать, это запросить его с помощью запросов Laravel Eloquent (также возможен необработанный 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*

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

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

1 :  data1   data2
2 : data1*  data2*

Если есть третья партия с данными

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

Затем он появится в третьей партии как

3 : data1**

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

Любой совет был бы признателен.


person Jinmo Chong    schedule 08.12.2018    source источник
comment
так что SQL-запроса нет?   -  person Akam    schedule 09.12.2018
comment
@Akam Вот о чем я спрашиваю   -  person Jinmo Chong    schedule 09.12.2018
comment
То, что вы спрашиваете, похоже на PIVOT на сервере sql. К сожалению, mysql не имеет функции поворота. Но приблизительное решение можно получить с помощью GROUP_CONCAT   -  person isuru89    schedule 09.12.2018


Ответы (1)


Это выглядит как ссылка 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, по вашему желанию.

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

person isuru89    schedule 09.12.2018