【问题标题】:SQL QUERY how to select column by other constraintsSQL QUERY如何通过其他约束选择列
【发布时间】:2018-12-08 22:03:35
【问题描述】:

我正在使用背包-crud 控制器 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、batch、 并按 column_id 在行内排序。

所以结果查询会是这样的

1 :  data1   data2
2 : data1*  data2*

如果有第三批有数据

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

那么它会在第三批下显示为

3 : data1**

我可以用代码做到这一点,但不能用 sql。

任何建议将不胜感激。

【问题讨论】:

  • 所以没有SQL查询?
  • @Akam 这就是我要问的
  • 你问的是PIVOT in sql server。不幸的是 mysql 没有旋转功能。但是可以使用GROUP_CONCAT 检索近似解

标签: php mysql eloquent laravel-backpack


【解决方案1】:

这看起来像 sql server 中的 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列中包含的数据随意更改分隔符。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    相关资源
    最近更新 更多