SQL QUERY如何通过其他约束选择列

时间:2018-12-08 22:03:36

标签: php mysql eloquent backpack-for-laravel

我正在使用背包式控制器 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。

任何建议将不胜感激。

1 个答案:

答案 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列中包含的数据来更改分隔符。

希望这对您有所帮助。