Pertanyaan MySQL untuk menukar baris berbilang jadual kepada lajur
P粉882357979
P粉882357979 2023-08-13 16:02:22
0
1
550
<p>Saya perlu bertanya kepada anda tentang pertanyaan pilih MySQL daripada 3 jadual. </p> <p>Saya mempunyai 3 jadual yang serupa: </p> <p><strong>table_1</strong></p> <pre class="brush:php;toolbar:false;">menu_id | 1 | 2 |. Menu 2</pre> <p><strong>table_2</strong></p> <pre class="brush:php;toolbar:false;">item_id | 1 |. 1 | 2 |. 1 | 3 |. 2 | 4 |. 2 |. <p><strong>table_3</strong></p> <pre class="brush:php;toolbar:false;">harga_id_barang | 1 |. 1 | 2 |. 1 | 3 |. 2 | 4 |. 4 | 5 |. 4 |. 9.60< <p>Saya perlu melaksanakan output berikut SELECT:</p> <pre class="brush:php;toolbar:false;">item_id | 1 |. menu 1 | 2 |. menu 1 | 3 |. menu 2 | 4 |. 2 |. <p>Saya ingin mengisi lajur pertanyaan (p_EUR, p_USD, dsb.) dengan baris daripada table_3. Jika tiada rekod yang sepadan, 0 atau NULL dikembalikan. Jadual digabungkan melalui <code>table_1.menu_id=table_2.menu_id</code> dan <code>table_2.item_id=table_3.item_id</code>. </p>
P粉882357979
P粉882357979

membalas semua(1)
P粉476046165

Boleh guna case when

SELECT
t2.item_id,
t2.item_name,
t2.menu_id,
t1.menu_name,
 MAX(CASE WHEN t3.currency_code = 'EUR' THEN t3.price END) AS p_EUR,
 MAX(CASE WHEN t3.currency_code = 'USD' THEN t3.price END) AS p_USD,
 MAX(CASE WHEN t3.currency_code = 'GBP' THEN t3.price END) AS p_GBP,
 MAX(CASE WHEN t3.currency_code = 'RON' THEN t3.price END) AS p_RON,
 MAX(CASE WHEN t3.currency_code = 'LEV' THEN t3.price END) AS p_LEV
FROM table_2 AS t2
JOIN table_1 AS t1 ON t2.menu_id = t1.menu_id
LEFT JOIN table_3 AS t3 ON t2.item_id = t3.item_id
GROUP BY t2.item_id, t2.item_name, t2.menu_id, t1.menu_name;

Jika anda perlu menukar null kepada 0, anda boleh menggunakan COALESCE seperti yang ditunjukkan di bawah COALESCE(MAX(CASE WHEN t3.currency_code = 'LEV' THEN t3.price END), 0) AS p_LEV

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan