ここは少し複雑です。結果を列名として使用する方法を検討してきましたが、可能だと思われますが、私が見つけたすべての例は非常に単純なテーブル設計を使用しています。
私が持っているのは3つのテーブルです。
「order」テーブルがあり、「order_extras」を持つことができます。「extras」テーブルには、追加の名前と価格が格納され、「order_extras」には基本的に、主キー、注文 ID、および追加 ID が含まれます。
これを大まかにグラフで表すと、次のようになります。
これを例として、「extras」テーブルに 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 |
+----------+----------------+-----------+------------------+---------------+