3 ligne retournées pour un seul ID

neo25
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 1
Inscription: 16 Jan 2012

3 ligne retournées pour un seul ID

Message le Lun Jan 16, 2012 13:39

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 :
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
Nouveau WRInaute
 
Messages: 5
Inscription: 29 Jan 2012

Re: 3 ligne retournées pour un seul ID

Message le Sam Fév 04, 2012 21:48

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é
WRInaute impliqué
 
Messages: 526
Inscription: 1 Sep 2004

Re: 3 ligne retournées pour un seul ID

Message le Sam Fév 04, 2012 23:34

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.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 5 invités