【问题标题】:How to convert rows into columns with codeigniter active record pattern?如何使用 codeigniter 活动记录模式将行转换为列?
【发布时间】:2014-10-19 05:44:26
【问题描述】:

这是我的桌子

+------+------+-------------+
| sid  | cid  | amount      |
+------+------+-------------+
| 32   | 1    | 500         |
+------+------+-------------+
| 33   | 1    | 300         |
+------+------+-------------+
| 32   | 2    | 500         |
+------+------+-------------+
| 33   | 2    | 400         |
+------+------+-------------+
| ..   | .    | ...         |
+------+------+-------------+
| ..   | .    | ...         |
+------+------+-------------+
| 32   | n    | 100         |
+------+------+-------------+
| 33   | n    | 100         |
+------+------+-------------+

在我看来,我想在我的视图中显示它

+------+----------+-----------+------+------------+------------+
| sid  | amount(1)| amount(2) |  ... | amount(n)  |Total amount|
+------+----------+-----------+------+------------+------------+
| 32   | 500      | 500       |  ... | 100        |1100        |
+------+----------+-----------+------+------------+------------+
| 33   | 300      | 400       |  ... | 100        |800         |
+------+----------+-----------+------+------------+------------+

我该怎么做?

【问题讨论】:

标签: mysql codeigniter activerecord


【解决方案1】:

您可以使用 SQL 的GROUP_CONCATSUMGROUP 子句。但是,金额不会有多个列。一个 sid 的金额列表将全部放在一个列中,值以逗号分隔。

SELECT sid,
       GROUP_CONCAT(amount) AS amount,
       SUM(amount) AS total
FROM mytbl
GROUP BY sid;

【讨论】:

  • 由于您将使用 PHP,因此您可以使用以下内容从金额列中获取各个金额:
  • 为了简单起见,我支持这个答案;除非您使用的数据库支持开箱即用的枢轴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
相关资源
最近更新 更多