Requête MySQL pour convertir les lignes de plusieurs tables en colonnes
P粉882357979
2023-08-13 16:02:22
<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>
Vous pouvez utiliser
case when
Si vous devez convertir null en 0, vous pouvez utiliser
COALESCE
comme indiqué ci-dessousCOALESCE(MAX(CASE WHEN t3.currency_code = 'LEV' THEN t3.price END), 0) AS p_LEV