Regrouper plusieurs lignes en une seule

Regrouper plusieurs lignes en une seule - SQL/NoSQL - Programmation

Marsh Posté le 24-05-2004 à 16:26:00    

Bonjour,
Voici le probleme que j'ai sur une base SQL :
 
table products
products_id, products_model
1 T-shirt bleu
2 T-shirt rouge
 
table products_stock
products_id, products_size, products_stock_quantity
2    1   230
2    2   100  
2    3   54  
2    4   110
 
J'ai une table "products" avec une liste de produits, et j'ai une table "products_stock" avec le stock pour chaque taille (taille 1,2,3,4)
 
J'aimerais regrouper les résultats de cette facon :
products_id, products_model, taille S, taille M, taille L, taille XL
2            t-shirt rouge    230      100       54        110
 
c'est à dire que je veux tout regrouper en une seule ligne...
 
Après plusieurs heures de recherches, je baisse les bras.
Merci d'avance de votre aide !

Reply

Marsh Posté le 24-05-2004 à 16:26:00   

Reply

Marsh Posté le 24-05-2004 à 16:57:58    

Y a moyen, mais c'est très lourd comme manip, ca nécessite une requète par colonne.

Reply

Marsh Posté le 24-05-2004 à 17:02:41    

essaie ça ...
 
select p.products_id, p.products_model ,
s1.products_stock_quantity ,
s2.products_stock_quantity ,
s3.products_stock_quantity ,
s4.products_stock_quantity  
from products p  
inner join products_stock s1
 on p.products_id = s1.products_id and
    s1.products_size =1    
inner join products_stock s2
 on p.products_id = s2.products_id and
    s2.products_size =2    
inner join products_stock s3
 on p.products_id = s3.products_id and
    s3.products_size =3    
inner join products_stock s4
 on p.products_id = s4.products_id and
    s4.products_size =4    

Reply

Marsh Posté le 25-05-2004 à 10:48:15    

Super merci !!!! Ca fonctionne très bien !

Reply

Marsh Posté le 25-05-2004 à 12:41:22    

J'ai encore un petit probleme. Le problème est que lorsque un produit n'est pas disponible dans une taille (aucun ligne pour la taille dans la table products_stock), alors le résultat de la requete donne rien un résultat vide... Y'a t'il un moyen pour contourner ca ?

Reply

Marsh Posté le 25-05-2004 à 12:42:39    

thomasPa a écrit :

J'ai encore un petit probleme. Le problème est que lorsque un produit n'est pas disponible dans une taille (aucun ligne pour la taille dans la table products_stock), alors le résultat de la requete donne rien (un résultat vide)... Y'a t'il un moyen pour contourner ca ?
 
Vu que 50% de mes produits ne disposent pas d'une taille (livres, cd, ...), la requete pour ces produits ne renverrait aucun résultat et c'est très problématique.
 
Merci d'avance

Reply

Marsh Posté le 25-05-2004 à 12:55:08    

Tu peux utiliser une fonction du genre NVL(quantité,0). La fonction est dispo avec Oracle. Je ne sais pas si elle est dispo avec tous les SGBD (Il doit exister des équivalents)

Reply

Marsh Posté le 25-05-2004 à 14:54:19    

Tu remplaces les  
"inner join" par des
"left join"
 
;-)

Reply

Marsh Posté le 25-05-2004 à 14:55:15    

Vinx +1
 
C quoi au fait ton SGBD ?

Reply

Marsh Posté le 25-05-2004 à 15:18:15    

[:totoz] Vu les solutions que vous lui donnez, j'espère pour lui qu'il a blindé ses procédures d'insertion dans sa DB...

Reply

Marsh Posté le 25-05-2004 à 15:18:15   

Reply

Marsh Posté le 25-05-2004 à 16:02:16    

merci beaucoup, ca fonctionne :)
Que veux tu dire gizmo ?

Reply

Marsh Posté le 25-05-2004 à 16:37:17    

gizmo a écrit :

[:totoz] Vu les solutions que vous lui donnez, j'espère pour lui qu'il a blindé ses procédures d'insertion dans sa DB...


 
:sweat:  
 
Bon on est pas sur un forum de puristes ... maintenant
si tu as d'autres propositions à faire ... faut pas te
géner  ;)  
 

Reply

Marsh Posté le 25-05-2004 à 17:13:28    

Je veux dire qu'avec les solutions qu'ils te propose, si jamais tu as un jour qq'un qui arrive à insérer une seconde ligne avec un product_id et un product_size déjà existant, tout ton système s'écroule.

Reply

Marsh Posté le 25-05-2004 à 18:20:15    

oui c'est vrai que si un product_size (donc une taille) est ajoutée, le stock pour cette taille n'apparaitra pas dans mon résultat.. Ca m'ennuis mais j'ai ajouté dans la table une liste exaustive des tailles...

Reply

Marsh Posté le 26-05-2004 à 09:55:23    

gizmo a écrit :

Je veux dire qu'avec les solutions qu'ils te propose, si jamais tu as un jour qq'un qui arrive à insérer une seconde ligne avec un product_id et un product_size déjà existant, tout ton système s'écroule.


 
+1

Reply

Marsh Posté le 26-05-2004 à 09:56:23    

thomaspa a écrit :

oui c'est vrai que si un product_size (donc une taille) est ajoutée, le stock pour cette taille n'apparaitra pas dans mon résultat.. Ca m'ennuis mais j'ai ajouté dans la table une liste exaustive des tailles...


 
Donc pas de blème  ;)

Reply

Marsh Posté le 26-05-2004 à 09:58:14    

oui :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed