Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 06/05/2011, 11h56   #1
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
Par défaut [MySQL] Select avec WHERE sur un champs d'une autre table ?

Bonjours Bonjours.

je voudrais savoir si c'est possible de faire un test WHERE sur une autre table ?

Je m'explique, j'ai 3 tables, qui sont relier entre elle :
Niveau , Exercice , Sequence :

la table niveau contient des exercices qui contient des sequences...

en gros j'arrive à récupérer le nombre d'exercice en faisant :

Code :
1
2
3
4
$sql = "SELECT COUNT(*) as nb FROM exercice WHERE id_lvl = $id_lvl";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$row = mysql_fetch_assoc($req);
$nbExo = $row['nb'];
mais je voudrais maintenant récupérer de la même magnière le nombre de séquence, qui appartiennent à l'id de l'exercice qui appartient au id_lvl ci dessus.

Auriez vous une solution please ?
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 12h05   #2
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Re ,

Il suffit de joindre ta 2ème table à la première. Voir la doc .
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 12h06   #3
Membre éclairé
 
Avatar de ZnhaarX
 
Homme Gabriel Malet
Ingénieur développement logiciels
Inscription : février 2011
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Gabriel Malet
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2011
Messages : 146
Points : 340
Points : 340
Salut,

Il me semble que ce que tu cherches correspond aux jointures en SQL non ?

Code :
$sql = "SELECT COUNT(s.id_seq) AS nb FROM exercice AS e, sequence AS s, niveau AS n WHERE n.id_lvl = $id_lvl AND n.id_lvl = e.id_lvl AND e.id_exo = s.id_seq;"
Ce ne serait pas quelque chose du genre?
A noter qu'on peut tout aussi bien passer par les INNER JOIN.
__________________
« War is peace. Freedom is slavery. Ignorance is strength. » - George Orwell
ZnhaarX est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/05/2011, 13h30   #4
Invité de passage
 
Inscription : mai 2010
Messages : 75
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 75
Points : 4
Points : 4
Merci a vous deux pour vos réponse

J'ai compris a merveille le fonctionnement

à l'aide de la ligne que tu m'as ZnhaarX j'arrive à récupérer toutes les séquences, mais j'ai encore deux petites questions a vous posez :

Pour le moment j'arrive à récupérer le nombre de séquence total du niveau, mais comment faire pour récupérer le nombre de sequence de l'exercice 1, puis de l'exercice 2... ?

et Comment faire pour récupérer les informations de la 1er ligne de ma table séquence, ensuite la 2eme, et la 3eme... jusqu'à qu'il n'y en ai plus ?
danydan01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 15h17   #5
Membre éclairé
 
Avatar de ZnhaarX
 
Homme Gabriel Malet
Ingénieur développement logiciels
Inscription : février 2011
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Gabriel Malet
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2011
Messages : 146
Points : 340
Points : 340
Citation:
Envoyé par danydan01 Voir le message
Pour le moment j'arrive à récupérer le nombre de séquence total du niveau, mais comment faire pour récupérer le nombre de sequence de l'exercice 1, puis de l'exercice 2... ?
Il suffit de faire comme tu as fait avec ton WHERE n.id_lvl = $id_lvl sauf que tu mets WHERE n.id_exo = 1 etc.
Après si tu veux faire une requête qui te retourne le nombre de séquence de chacun des exercice, en même temps tu peux utiliser UNION entre deux SELECT:

Code :
$sql = "SELECT COUNT(s.id_seq) AS nb FROM exercice AS e, sequence AS s, niveau AS n WHERE n.id_lvl = $id_lvl AND e.id_exo = 1 AND n.id_lvl = e.id_lvl AND e.id_exo = s.id_seq UNION SELECT COUNT(s.id_seq) AS nb FROM exercice AS e, sequence AS s, niveau AS n WHERE n.id_lvl = $id_lvl AND e.id_exo = 2 AND n.id_lvl = e.id_lvl AND e.id_exo = s.id_seq ";
C'est la première idée qui me vient; ça ne veut pas dire que ça fonctionne ni qu'il n'y a pas mieux

Citation:
Envoyé par danydan01 Voir le message
et Comment faire pour récupérer les informations de la 1er ligne de ma table séquence, ensuite la 2eme, et la 3eme... jusqu'à qu'il n'y en ai plus ?
Je sais pas si j'ai bien compris ce que tu veux faire...
Tu veux sélectionner tous les enregistrements (lignes) de ta table séquence ?
Dans ce cas là, un simple SELECT fera l'affaire:

Code :
$sql = "SELECT * FROM sequence";
Après je sais pas si c'est ça que tu voulais faire...
__________________
« War is peace. Freedom is slavery. Ignorance is strength. » - George Orwell
ZnhaarX est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/05/2011, 16h05   #6
Candidat au titre de Membre du Club
 
Inscription : janvier 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 37
Points : 14
Points : 14
Citation:
Envoyé par danydan01 Voir le message
et Comment faire pour récupérer les informations de la 1er ligne de ma table séquence, ensuite la 2eme, et la 3eme... jusqu'à qu'il n'y en ai plus ?
Voici une solution qui me vient(pour récupérer les variables et leurs valeurs):une "SELECT",parcourir ligne par ligne. Tu répète au tant de fois que tu souhaites!!
Code :
1
2
3
4
5
6
7
8
9
//pour une seule ligne  
$req='select champ1,champ2,champ3,champ4 from log';	
$champ=mysql_query($req,$connexion) or die (mysql_error());
while($donnee=mysql_fetch_row($champ))
{$id=$donnee[0];
$var1=$donnee[1];
$var2=$donnee[2];
.......
$varN=$donnee[n];
}
hajer.d 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 09h08.


 
 
 
 
Partenaires

Hébergement Web