我正在使用背包式控制器 PHP-Laravel。
使用背包(库)给出的crudController,我要做的就是 是使用Laravel Eloquent(也可以使用原始sql)查询来查询它。
比背包图书馆将自动 为我打印列表视图。
但是我正在为这个困难的查询而苦苦挣扎。
问题是我有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。
任何建议将不胜感激。
答案 0 :(得分:1)
这看起来像sql服务器中的PIVOT。不幸的是,mysql没有此功能。
我可以使用GROUP_CONCAT
给您一个近似的原始mysql查询。假设您的表名是mytable
。
SELECT
session_id,
batch,
GROUP_CONCAT(data ORDER BY column_id SEPARATOR ', ') AS dataList
FROM mytable
GROUP BY session_id, batch
然后,您可以使用给定的分隔符(此处使用dataList
)来分隔别名为,
的列。
您可以根据需要根据data
列中包含的数据来更改分隔符。
希望这对您有所帮助。