3 ligne retournées pour un seul ID
3 messages
• Page 1 sur 1
- neo25
- Nouveau WRInaute

- Messages: 1
- Inscription: 16 Jan 2012
3 ligne retournées pour un seul ID
j'ai fait un script php pour exporter des données sélectionnées de ma BDD en fichier csv, le problème est que chaque article a 3 attributs liés et chaque attribut a un prix et une quantité.
j'ai fait une requête sql qui me renvoi 3 lignes pour chaque article comme ça :
par exemple pour l'IDarticle 5555, nom ipod
5555,ipod,prix_att1,NULL,NULL,qté_att1,NULL,NULL;
5555,ipod,NULL,prix_att2,NULL,NULL,qté_att2,NULL;
5555,ipod,NULL,NULL,prix_att3,NULL,NULL,qté_att3;
or ce que je vais c'est de regrouper les 3 ligne en une seule
5555,ipod,prix_att1,prix_att2,prix_att3,qté_att1,qté_att2,qté_att3;
avec une boucle foreach mais j'ai pas trouvé comment!!!
voici mes 2 requêtes :
je ne sais pas coment je peut associer les 3 prix et quantités des 3 attributs a leurs article dans une seule ligne dans un array soit en php ou en sql.
Est ce que quelqu'un a une idée ??
merci d'avance
j'ai fait une requête sql qui me renvoi 3 lignes pour chaque article comme ça :
par exemple pour l'IDarticle 5555, nom ipod
5555,ipod,prix_att1,NULL,NULL,qté_att1,NULL,NULL;
5555,ipod,NULL,prix_att2,NULL,NULL,qté_att2,NULL;
5555,ipod,NULL,NULL,prix_att3,NULL,NULL,qté_att3;
or ce que je vais c'est de regrouper les 3 ligne en une seule
5555,ipod,prix_att1,prix_att2,prix_att3,qté_att1,qté_att2,qté_att3;
avec une boucle foreach mais j'ai pas trouvé comment!!!
voici mes 2 requêtes :
- Code: Tout sélectionner
req1='select id_product FROM product GROUP BY id_product';
req2 ='SELECT pa.id_product,(IFNULL((SELECT SUM(pa.quantity) FROM product_attribute pa WHERE pa.id_product = p.id_product), 0)) as quantite,pa.price,pa.quantity
FROM `product_attribute` pa
LEFT JOIN `product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
LEFT JOIN `attribute` a ON a.`id_attribute` = pac.`id_attribute`
LEFT JOIN `attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group`
LEFT JOIN `attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = 2)
WHERE pa.`id_product` IN ('.$tab['id_product'].')
ORDER BY pa.`id_product_attribute`';
je ne sais pas coment je peut associer les 3 prix et quantités des 3 attributs a leurs article dans une seule ligne dans un array soit en php ou en sql.
Est ce que quelqu'un a une idée ??
merci d'avance
- Gestionsci
- Nouveau WRInaute

- Messages: 5
- Inscription: 29 Jan 2012
Re: 3 ligne retournées pour un seul ID
J'ai une solution mais c'est très lourd :
- Code: Tout sélectionner
$a['0']='5555,ipod,prix_att1,NULL,NULL,qté_att1,NULL,NULL';
$a['1']='5555,ipod,NULL,prix_att2,NULL,NULL,qté_att2,NULL';
$a['2']='5555,ipod,NULL,NULL,prix_att3,NULL,NULL,qté_att3';
$b='';
for($i=0;$i!=3;$i++){
$a[$i]=explode(',',$a[$i]);
if($i=='0'){
$b['0']=$a[$i]['0'];
$b['1']=$a[$i]['1'];
}
if($a[$i]['2']!='NULL') $b['2']=$a[$i]['2'];
if($a[$i]['3']!='NULL') $b['3']=$a[$i]['3'];
if($a[$i]['4']!='NULL') $b['4']=$a[$i]['4'];
if($a[$i]['5']!='NULL') $b['5']=$a[$i]['5'];
if($a[$i]['6']!='NULL') $b['6']=$a[$i]['6'];
if($a[$i]['7']!='NULL') $b['7']=$a[$i]['7'];
}
$b=implode(',',$b);
echo $b;
-

MarvinLeRouge - WRInaute impliqué

- Messages: 526
- Inscription: 1 Sep 2004
Re: 3 ligne retournées pour un seul ID
Salut,
Aurais-tu une description sommaire de la structure des tables et de la nature de ces attributs, stp ?
Je comprends mal notamment la relation logique entre le produit et ce que tu appelles son attribut, ainsi que la raison du group by sur le select de la table produit.
Aurais-tu une description sommaire de la structure des tables et de la nature de ces attributs, stp ?
Je comprends mal notamment la relation logique entre le produit et ce que tu appelles son attribut, ainsi que la raison du group by sur le select de la table produit.
3 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités
