Requête multi-table

arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007 - 30 mars 2006 à 12:59
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007 - 30 mars 2006 à 14:42
Bonjour à tous,

J'ai une première table 'compteur_visite' qui enregistre des adresses ip.
J'ai une seconde table 'lh_membre' qui contient ip, nom et prenom d'un utilisateur.
Mon but : recuperer nom et prenom pour compteur_visite.ip=lh_membre.ip
Actuellement, je fais comme ça :

$req = mysql_query("SELECT ip FROM compteur_visite") or die(mysql_error());
(while $res = mysql_fetch_array($req)){
$req1 = mysql_query("SELECT ip,nom,prenom FROM lh_membre WHERE ip='$res['ip']'") or die(mysql_error());
(while $res1 = mysql_fetch_array($req1)){
echo $res1['nom'].' '.$res1['prenom'];
}
}
Ca fait de la boucle dans de la boucle mais ça fonctionne.
Comment je pourrais améliorer cette requête ?

Merci de vos réponses.

8 réponses

krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
30 mars 2006 à 13:05
Salut,

SELECT lh_membre.ip, nom, prenom
FROM lh_membre, compteur_visite
WHERE lh_membre.ip = compteur_visite.ip

voilou
0
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
30 mars 2006 à 13:23
Bon, ca me parait pas mal mais maintenant je rajoute une table 'lh_prof'
J'ai fait çà et cela me récupère tous les utilisateurs de ma base

SELECT lh_membre.ip, lh_prof.ip, lh_prof.nom, lh_prof.prenom, lh_membre.nom, lh_prof.prenom FROM lh_membre, lh_prof, compteur_visite WHERE lh_membre.ip compteur_visite.ip OR lh_prof.ip compteur_visite.ip
0
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
30 mars 2006 à 13:31
ben la ca doit etre que tous tes membres et profs ont une ip correspondant a compteur_visite.ip .
Au passage tu feras attention, tu as deux fois lh_prof.prenom dans ton SELECT, ca ne cause pas de problème, juste que je pense que tu voulais mette membre.prenom a la fin.
0
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
30 mars 2006 à 13:31
y'a une erreur dans la requête mais cela ne change rien pour autant SELECT lh_membre.ip, lh_prof.ip, lh_prof.nom, lh_prof.prenom, lh_membre.nom, lh_membre.prenom FROM lh_membre, lh_prof, compteur_visite WHERE lh_membre.ip compteur_visite.ip OR lh_prof.ip compteur_visite.ip
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
30 mars 2006 à 13:35
En fait dans lh_membre et lh_prof, tous les utilisateurs ont une ip = 0 tant qu'ils ne sont pas passés (remise à zéro de l'ip chaque 24 h).
Lorsqu'ils passent, l'ip est récupérée dans compteur_visite, lh_membre et lh_prof.
Je n'ai pourtant aucune ip = 0 dans compteur_visite. donc pourquoi ??
0
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
30 mars 2006 à 13:52
juste au cas ou, essaie de mettre plutot NULL que 0 pour les ip
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mars 2006 à 14:10
Bah, normal que ta requête ramène tout le monde, tu lui dis d'aller chercher les utilisateurs qui ont une ip, en gros...
Y a un soucis dans la structure de ta base, à mon sens. membres et prof n'ont pas de liens, donc tu ne peux pas aller chercher les deux à la fois de cette manière.

Soit tu crées une seule table membre, avec un champ distinctif : pro ou non. Voire, si c'est juste une question d'ip, ajouter à la table membre l'ip publique et l'ip pro, puis faire ta requête normalement.
Soit tu fais 2 requêtes, une pour les pro, une non.
0
arnold002 Messages postés 121 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 5 mars 2007
30 mars 2006 à 14:42
En fait, j'ai fait le C.. au départ. J'ai pas réfléchi à tout cela.
J'ai créé 2 tables lh_membre et lh_prof complètement identiques alors qu'il m'aurati suffit de rajouter un champ avec comme valeur 'prof' ou 'membre' et là, ça aurait été beaucoup plus simple.
A chaque fois, que j'effectue des requêtes, je suis obliger de chercher dans les 2 tables !
Bien fait pour moi !!!
0
Rejoignez-nous