【发布时间】:2014-03-27 13:10:17
【问题描述】:
你能帮我解决我的问题吗?我正在使用带有 mysql 数据库的 xampp 服务器。
我有一个如下所示的表格:
|----|------------|--------------|-------------|------------|----------|
| id | period | category | subcategory | amount | currency |
|----|------------|--------------|-------------|------------|----------|
| 1 | 2014-01-01 | Category One | SubCat One | 325.48 | EUR |
| 2 | 2014-01-01 | Category One | SubCat One | 1680.20 | GBP |
| 3 | 2014-01-01 | Category One | SubCat Two | 229.78 | EUR |
| 4 | 2014-01-01 | Category One | SubCat Two | 1152.41 | GBP |
| 5 | 2014-01-01 | Category Two | SubCat One | 417.92 | EUR |
| 6 | 2014-01-01 | Category Two | SubCat One | 980.64 | GBP |
|----|------------|--------------|-------------|------------|----------|
我需要得到项目将按三个字段(期间、类别、子类别)分组的结果,并且每种货币的动态列将添加到每个组中。像这样的:
|------------|--------------|-------------|--------|---------|
| period | category | subcategory | EUR | GBP |
|------------|--------------|-------------|--------|---------|
| 2014-01-01 | Category One | SubCat One | 325.48 | 1680.20 |
| 2014-01-01 | Category One | SubCat Two | 229.78 | 1152.41 |
| 2014-01-01 | Category Two | SubCat One | 417.92 | 980.64 |
|------------|--------------|-------------|--------|---------|
我应该对表运行什么 sql 查询以获得所需的结果?
诀窍是查询应该自动管理多种货币,所以当我添加新货币的新记录时,将在我的结果记录集中动态创建另一列。
使用新货币 (USD) 添加第 7 行和第 8 行后的表格。
|----|------------|--------------|-------------|------------|----------|
| id | period | category | subcategory | amount | currency |
|----|------------|--------------|-------------|------------|----------|
| 1 | 2014-01-01 | Category One | SubCat One | 325.48 | EUR |
| 2 | 2014-01-01 | Category One | SubCat One | 1680.20 | GBP |
| 3 | 2014-01-01 | Category One | SubCat Two | 229.78 | EUR |
| 4 | 2014-01-01 | Category One | SubCat Two | 1152.41 | GBP |
| 5 | 2014-01-01 | Category Two | SubCat One | 417.92 | EUR |
| 6 | 2014-01-01 | Category Two | SubCat One | 980.64 | GBP |
|----|------------|--------------|-------------|------------|----------|
| 7 | 2014-01-01 | Category One | SubCat One | 2525.50 | USD |
| 8 | 2014-01-02 | Category One | SubCat One | 700.12 | USD |
|----|------------|--------------|-------------|------------|----------|
结果(另一个动态创建的货币列)。
|------------|--------------|-------------|--------|---------|---------|
| period | category | subcategory | EUR | GBP | USD |
|------------|--------------|-------------|--------|---------|---------|
| 2014-01-01 | Category One | SubCat One | 325.48 | 1680.20 | 2525.50 |
| 2014-01-01 | Category One | SubCat Two | 229.78 | 1152.41 | 0 |
| 2014-01-01 | Category Two | SubCat One | 417.92 | 980.64 | 0 |
| 2014-01-02 | Category One | SubCat One | 0 | 0 | 700.12 |
|------------|--------------|-------------|--------|---------|---------|
有什么简单的方法可以使用 sql 查询来实现吗? 还是需要一些 php 编程来以所需的方式准备结果?
感谢您的帮助,
谢谢
【问题讨论】: