Page 1 sur 1

Requete sur 4 tables

Posté : 31 oct. 2009, 07:53
par Fredy07
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

Re: Requete sur 4 tables

Posté : 31 oct. 2009, 16:11
par Ryle
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
  }
  ...

Re: Requete sur 4 tables

Posté : 03 nov. 2009, 05:16
par Fredy07
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"