Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2006, 10h22   #1
Invité régulier
 
Avatar de flysurfer
 
Inscription : juillet 2005
Messages : 60
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 60
Points : 6
Points : 6
Par défaut [SQL] Organisation des requetes

Bonjour

je vais essayer d'etre le plus clair et precispossible.

J'ai 4 tables

ecole : numero, nom, numero_quartier
quartier : numero, nom_quartier
intervention : numero, numero_ecole, date,demande
intervention_2 : numero, numero_intervention, date, realisation

les liens entre les tables : j'indique les cles

ecole -> quartier = numero_quartier -> numero
intervention -> ecole = numero_ecole -> numero
intervention_2 -> intervention = numero_intervention ->numero

Je dois récupérer un tableau de 4 colonnes
Quartier 1
Citation:
|->Ecole 1
Citation:
|->intervention 1
Citation:
|->réalisation 1
|->réalisation 2
|->réalisation 3
|->intervention 2
Citation:
|->réalisation 4
|->réalisation 5
|->réalisation 6

Les données de celui-ci doivent etre regroupés par quartier, triés par école.

QUESTION :

Comment et dans quel ordre dois-je organiser mes requetes SQL ???

J'ai commencé par

Créer un tableau des quartiers
Code :
1
2
3
4
5
6
$query = "SELECT * FROM ecole_quartier ORDER BY quartier";
$result = mysql_query($query) ;
$quartier= array();
while ($row = mysql_fetch_row($result) ) {
  $quartier[] = $row[0];
  }
Puis lancé la requete suivante
Code :
1
2
3
4
5
6
7
8
9
10
for ($i = 0; $i < count($quartier);$i++) {
  $query = "SELECT numero, nom_ecole FROM ecole_nom_ecole WHERE 1 AND quartier = '".$quartier[$i]."' AND numero IN (SELECT nom_ecole FROM ecole_intervention WHERE date > '".$date_debut."' ORDER BY date) ORDER BY quartier, nom_ecole";
  $result = mysql_query($query);
  echo $quartier[$i]."<br>";
  while ($row=mysql_fetch_row($result)) {
    $nom_ecole=$row[1];
    echo $nom_ecole."<br>";
    }
  echo "<hr>";
  }
Dois-je continuer dans cette voix ???

Merci d'avance de vos réponses

Fly
flysurfer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2006, 10h37   #2
Membre régulier
 
Avatar de vincedom
 
Inscription : mars 2006
Messages : 87
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2006
Messages : 87
Points : 98
Points : 98
Envoyer un message via MSN à vincedom Envoyer un message via Skype™ à vincedom
Bonjour


A vrai dire je verrai plus une grosse requete SQL dans lequel tu as tout dans le bonne ordre (regarde du cote des LEFT JOIN) et ensuite tu affiche le nom de l'ecole / du quartier etc.... seulement si il est different du precedent....

Perso moi je trouverai cela plus propre (en regle general il faut mieux faire le maximun possible en SQL et le minimum en php, tu limite les erreures).

vincedom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2006, 10h49   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 24
Points : 11
Points : 11
Suis du même avis que vincedom... ça peut t'éviter pas mal de galère...

Si tu n'es pas trop habitué aux INNER JOIN ou LEFT JOIN, essai d'utiliser Navicat -> http://www.navicat.com/
(dispo sous osx, linux et windows, payant, mais une version d'essai existe) Ce soft va te permettre de générer ta requête en deux temps trois mouvement...

Edit :

Un petit exemple du Query builder trouvé sur leurs site... ça correspond à peux près à ce que tu veux faire...

http://support.navicat.com/animations/query_builder.gif
fastmanu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2006, 11h51   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Code :
SELECT * FROM ecole, quartier, intervention, intervention_2 WHERE ecole.numero_quartier = quartier.numero AND intervention.num_ecole = ecole.numero AND intervention_2.numero_intervention = intervention.numero ORDER BY quartier, ecole, intervention
A voir, c'est fait sans vérification aucune mais ça peut peut-être te servir de base.
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h59.


 
 
 
 
Partenaires

Hébergement Web