Enregistrement : 5. Le problème de ligne à colonne rencontré dans SQL (+ bouton de force de solution de problème 1795)

Titre original : 1795. Le prix de chaque produit dans différents magasins

surface:Products

+-------------+---------+ 
| Nom de la colonne | Type | 
+-------------+---- -----+ 
| product_id | int | 
| 
| store2 |
|
store1 | int 
La clé primaire de cette table est product_id (identifiant du produit). 
Chaque ligne stocke le prix de ce produit dans différents magasins store1, store2, store3. 
Si ce produit n'est pas vendu en magasin, la valeur sera nulle. 
Veuillez restructurer le tableau pour interroger le prix de chaque produit dans différents magasins, afin que le format de la sortie devienne . Si le produit n'est pas vendu dans le magasin, la ligne n'est pas sortie. L'ordre dans la table de sortie n'est pas obligatoire . 
Veuillez vous référer à l'exemple suivant pour le format de sortie de la requête. Exemple 1 :
 Saisissez : 
Table des produits : 
+---------+-------+-------+-------+ 
| id_produit | magasin1 | magasin2 | magasin3 |Products(product_id, store, price)
 
+---------+-------+-------+-------+
0 | 95 | 100 | 105 |
| 1 | 70 | null | 80 | 
+---------+-------+-------+-------+ Sortie : 
+--- ------+-------+-------+ 
| id_produit | magasin | prix | 
+--------- ---+------ --+-------+ 
| 0 | magasin1 | 95 | 
| 0 | magasin2 | 100 | 
| 0 | magasin3 | 105 | 
| 1 | magasin1 | 70 | 
| 1 | magasin3 | 80 | 
+--- ---------+---------+-------+ Explication : 
Les prix du produit 0 en magasin1, magasin2 et magasin3 sont respectivement Pour 95,100,105. 
Les prix du produit 1 dans le magasin1 et le magasin3 sont respectivement de 70 et 80. Impossible de l'acheter en magasin2.

Idée de résolution de problème : On peut voir que dans l'exemple, le comportement de la table d'entrée : product_id, store1, store2, store3. Mais dans la table de sortie, store1, store2 et store3 redeviennent le contenu des colonnes de la table, de sorte que des opérations de ligne à colonne doivent être effectuées.

Résolution de problème:

# Write your MySQL query statement below
# 1.一列一列处理
# 2.union all 拼接每一列的结果
# 3.如果一产品在商店中没有出售,则不输出这一行,所以用is not null作为筛选条件
select 
product_id , 'store1' as store , store1 as price
from
products
where store1 is not null 
union all
select
product_id , 'store2' as store , store2 as price
from
products
where store2 is not null 
union all
select
product_id , 'store3' as store , store3 as price
from
products
where store3 is not null 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45314061/article/details/130093258
conseillé
Classement