这里有点复杂。我一直在寻找一种将结果用作列名的方法,虽然这似乎可行,但我发现的所有示例都使用了非常简单的表格设计。
我有的是3张桌子。
我们有一个 'order' 表,然后它可以有 'order_extras'。“附加”表存储附加的名称和价格,“订单附加”基本上包含一个主键、订单 ID 和附加 ID。
粗略的图形表示如下:
以此为例,假设“附加”表中填充了 3 个额外的项目,名称和价格在此阶段无关紧要。
我想要做的是获取所有订单,但每个额外项目的名称都有额外的列。如果该项目已被购买(又名链接在 order_extras 表中),它将显示价格,否则它将为空/null。
这甚至可能吗?我一直在研究数据透视表,但这类事情的信息似乎有点不稳定。任何信息或建议将不胜感激!
示例数据
附加功能:
+----+------------------+--------+
| id | name | price |
+----+------------------+--------+
| 1 | Insurance | 59.95 |
| 2 | Lifetime Updates | 79.95 |
| 3 | Phone Support | 124.95 |
+----+------------------+--------+
订单:
+----+------------+
| id | customer |
+----+------------+
| 1 | John Smith |
| 2 | Bob Newbie |
| 3 | Bill Jobs |
| 4 | Ray Stantz |
+----+------------+
order_extras:
+----+----------+----------+
| id | order_id | extra_id |
+----+----------+----------+
| 1 | 4 | 2 |
| 2 | 3 | 1 |
| 3 | 3 | 3 |
| 4 | 1 | 1 |
+----+----------+----------+
期望的输出:
+----------+----------------+-----------+------------------+---------------+
| order.id | order.customer | Insurance | Lifetime Updates | Phone Support |
+----------+----------------+-----------+------------------+---------------+
| 1 | John Smith | 59.95 | 0 | 0 |
| 2 | Bob Newbie | 0 | 0 | 0 |
| 3 | Bill Jobs | 59.95 | 0 | 124.95 |
| 4 | Ray Stantz | 0 | 79.95 | 0 |
+----------+----------------+-----------+------------------+---------------+