Requête MySQL pour convertir les lignes de plusieurs tables en colonnes
P粉882357979
P粉882357979 2023-08-13 16:02:22
0
1
548
<p>Je dois vous poser des questions sur la requête de sélection MySQL à partir de 3 tables. </p> <p>J'ai 3 tables similaires : </p> <p><strong>table_1</strong></p> <pre class="brush:php;toolbar:false;">menu_id | 1 | 2 | Menu 2</pré> <p><strong>table_2</strong></p> <pre class="brush:php;toolbar:false;">item_id menu_id | 1 | 1 | Projet 1 2 | 1 | Projet 2 3 | 2 | Projet 3 4 | 2 | Projet 4</pré> <p><strong>table_3</strong></p> <pre class="brush:php;toolbar:false;">price_id item_id | 1 | 1 | 3,65 euros 2 | 1 | 3,45 dollars américains 3 | 2 | 9,00 euros 4 | 4 | 5 | 4 | RON 9,60</pré> <p>Je dois effectuer la sortie SELECT suivante : </p> <pre class="brush:php;toolbar:false;">item_id | menu_id | 1 | élément 1 | 1 | 2 | élément 2 | 1 | 3 | élément 3 | 2 | 4 | Élément 4 | 2 | Menu 2 | 0 | 0 | <p>Je souhaite remplir les colonnes de la requête (p_EUR, p_USD, etc.) avec les lignes de la table_3. S'il n'y a aucun enregistrement correspondant, 0 ou NULL est renvoyé. Les tables sont jointes via <code>table_1.menu_id=table_2.menu_id</code> et <code>table_2.item_id=table_3.item_id</code>. </p>
P粉882357979
P粉882357979

répondre à tous(1)
P粉476046165

Vous pouvez utiliser 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;

Si vous devez convertir null en 0, vous pouvez utiliser COALESCE comme indiqué ci-dessous COALESCE(MAX(CASE WHEN t3.currency_code = 'LEV' THEN t3.price END), 0) AS p_LEV

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal