Requete sur 4 tables

Eléphant du PHP | 214 Messages

31 oct. 2009, 07:53

Bonjour,

J'ai 4 tables: livres, titres, descriptions, chapitres, comment faire une requete afin d'avoir une structure comme celle la:

+ Livre1
++ Titre1
+++ Description1
++++ Chapitre1
++++ Chapitre2

+ Livre2
++ Titre2
+++ Description2
++++ Chapitre1
++++ Chapitre2
++++ Chapitre3
++++ Chapitre4

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 oct. 2009, 16:11

Tu ne pourras pas obtenir ce résultat avec une seule requête... en revanche avec des jointures simples tu peux obtenir une liste répétant les livres, titres, descriptions pour chaque chapitre :

Code : Tout sélectionner

Livre 1 ; Titre 1 ; Description 1 ; Chapitre 1 Livre 1 ; Titre 1 ; Description 1 ; Chapitre 2 Livre 2 ; Titre 2 ; Description 2 ; Chapitre 1 Livre 2 ; Titre 2 ; Description 2 ; Chapitre 2 Livre 2 ; Titre 2 ; Description 2 ; Chapitre 3 Livre 2 ; Titre 2 ; Description 2 ; Chapitre 4
A partir de ces données, tu peux aisément les remettre en forme avec php, en stockant chaque élément dans une variable temporaire. En gros, dans $livreTemp tu stockes le nom du livre, à chaque fois que le nom du livre change, tu l'affiche. Idem pour le titre, la description ...
while (...) {
  if ($livre != $livreTemp) {
    echo "<br />+ $livre"; // affiche le livre
    $livreTemp = $livre; // stocke la nouvelle valeur
  }

  if ($titre != $titreTemp) {
    echo "<br />++ $titre"; // affiche le titre
    $titreTemp = $titre; // stocke la nouvelle valeur
  }
  ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 214 Messages

03 nov. 2009, 05:16

Merci Ryle pour le coup de main, j'ai fais 3 requetes simples, comme suite:
sql1 = "select.."
while () {

sql2..
sql3..
}
Ce que je veux faire c'est de regrouper les 2 sql entre la boucle en une seule, sous la reserve de WHERE:
sql2 = "SELECT * FROM table1 WHERE id_des=id_livre"
sql3 = "SELECT * FROM table2 WHERE id_ch=id_livre"