Bonjour,
la requête pour faire apparaître les différentes caractéristiques en une seul requête :
1 2 3 4
| SELECT tv.id, tv.marque, tv.model, GROUP_CONCAT(CONCAT(nomcarac, ':', valeur)) carac
FROM tv
INNER JOIN tc ON tv.id = tc.id_voit
GROUP BY id; |
cette requête te donne comme résultat :
1 2 3 4 5 6
| +------+--------+--------+----------------------------------+
| id | marque | model | carac |
+------+--------+--------+----------------------------------+
| 1 | Pigeot | kangoo | vMax:140,couleur:rouge,poids:950 |
| 2 | Citron | C-Zero | vMax:120,couleur:bleue |
+------+--------+--------+----------------------------------+ |
Maintenant ce code la n'est pas très "propre" car tu devra quand même traiter le résultat, le mettre en forme dans différents tableaux pour pouvoir ensuite exploiter ces données donc autant le faire directement en traitant ta requête,
donc j'aurais tendance a plûtot partir sur une requête :
1 2 3
| SELECT tv.id, tv.marque, tv.model, tc.nomcarac, tc.valeur
FROM tv
INNER JOIN tc ON id = id_voit; |
qui te donne comme résultat :
1 2 3 4 5 6 7 8 9
| +------+--------+--------+----------+--------+
| id | marque | model | nomcarac | valeur |
+------+--------+--------+----------+--------+
| 1 | Pigeot | kangoo | couleur | rouge |
| 1 | Pigeot | kangoo | poids | 950 |
| 1 | Pigeot | kangoo | vMax | 140 |
| 2 | Citron | C-Zero | couleur | bleue |
| 2 | Citron | C-Zero | vMax | 120 |
+------+--------+--------+----------+--------+ |
ensuite on prend par exemple en langage PHP le traitement de cette requête :
1 2 3 4 5 6 7 8 9 10 11 12 13
| //$requete->fetch() te renvoi un tableau avec les différentes colonnes de ta requête et l assigne à $resultat
while($resultat = $requete->fetch() ){
//Donc pour chaque ligne retournée par la requête on créer un tableau qui va regrouper les caractéristiques d une voiture
$voitures[$resultat['id']] = array('marque' => $resultat['marque'],
'model' =>$resultat['model'])
//Chaque ligne de la requête renseigne sur une nouvelle caractéristique
//On ajoute alors un nouveau tableau à liste_carac de la voiture concerné avec le nom de la caractéristique et sa valeur
$voitures[$resultat['id']]['liste_carac'][] = array('nom' => $resultat['nomcarac'],
'valeur' => $resultat['valeur'] )
)
} |
Au final tu te retourvera avec un tableau comme celui-ci :
1 2 3 4 5 6 7 8 9 10
| array(
[1]=> array('marque'=>'Pigeot',
'model'=>'kangoo',
'liste_carac'=>array([0] => array('nom'=>'couleur',
'valeur'=>'rouge'),
[1] => array('nom'=>'poids',
'valeur'=>'950') )
), ...
//Ainsi de suite pour chaque voiture présente dans ta BDD
) |
Tu peux même simplifer le tableau liste_carac pour avoir :
[0] => array('couleur' => 'rouge')
Il faudra que la partie traitement du tableau liste_carac ressemble à :
$voitures[$resultat['id']]['liste_carac'][] = array($resultat['nomcarac'] => $resultat['valeur'] )
Partager