複数のテーブルの行を列に変換する MySQL クエリ
P粉882357979
2023-08-13 16:02:22
<p>MySQL の 3 つのテーブルからの選択クエリについて質問する必要があります。 </p>
<p>同様のテーブルが 3 つあります: </p>
<p><strong>表_1</strong></p>
<pre class="brush:php;toolbar:false;">menu_id | menu_name
1 | メニュー 1
2 | メニュー 2</pre>
<p><strong>表_2</strong></p>
<pre class="brush:php;toolbar:false;">item_id | menu_id | item_name
1 | 1 | プロジェクト 1
2 | 1 | プロジェクト 2
3 | 2 | プロジェクト 3
4 | 2 | プロジェクト 4</pre>
<p><strong>表_3</strong></p>
<pre class="brush:php;toolbar:false;">価格 ID | アイテム ID | 通貨コード | 価格
1 | 1 | ユーロ | 3.65
2 | 1 | 米ドル | 3.45
3 | 2 | ユーロ | 9.00
4 | 4 | レベル | 4.85
5 | 4 | RON | 9.60</pre>
<p>次の出力 SELECT を実行する必要があります:</p>
<pre class="brush:php;toolbar:false;">item_id | item_name | menu_id | menu_name | p_EUR | p_USD | p_GBP | p_RON | p_LEV
1 | アイテム 1 | 1 | メニュー 1 | 3.65 | 3.45 | 0 | 0 | 0
2 | アイテム 2 | 1 | メニュー 1 | 9.00 | 0 | 0 | 0 | 0
3 | アイテム 3 | 2 | メニュー 2 | 0 | 0 | 0 | 0 | 0
4 | アイテム 4 | 2 | メニュー 2 | 0 | 0 | 0 | 9.60 | 4.85</pre>
<p>クエリの列 (p_EUR、p_USD など) に table_3 の行を入力したいと考えています。一致するレコードがない場合は、0 または NULL が返されます。
テーブルは、<code>table_1.menu_id=table_2.menu_id</code> および <code>table_2.item_id=table_3.item_id</code> を介して結合されます。 </p>
を使用できます。 リーリーcase when
null を 0 に変換する必要がある場合は、以下に示すように
COALESCE
を使用できます。COALESCE(MAX(CASE WHEN t3.currency_code = 'LEV' THEN t3.price END), 0) AS p_LEV