Page 1 sur 2
requette sur plusieurs tables
Posté : 09 janv. 2011, 13:06
par olivxii
bon en faite j'avais glissé une erreur qui est corrigée.
par contre voila en faite le shema que je voudrais.
j'ai 3 tables : whoisonline qui recupere mon ip lorsque que je me connect
users_sessions qui recupere mon ip et id
user_profil qui stock mon nom et prenom et id
mais lorsque que je me connect il n'y a que users_session qui affiche une ligne supplémentaire.
ce que je voudrais faire :
que woisline/cIpName soit egale a users_sessions/IP qui soit egale a users_sessions /id pour afficher user_profil/name et firstname
quand je fait :
Code :
Code : Tout sélectionner
$sql = "SELECT * FROM whoisonline as t_une, devolia_rsed_users_sessions as t_deux WHERE t_une.cIpName = t_deux.IP ";
j'ai inscrit "visiteur en ligne : 1 (ce qui correspond a mon id dans users_sessions)
quand je fait :
Code :
Code : Tout sélectionner
$sql = "SELECT * FROM whoisonline as t_une, devolia_rsed_users_sessions as t_deux WHERE t_une.cIpName = t_deux.id ";
j'ai inscrit "visiteur en ligne : 8 (ce qui correspond au nombre de ligne dans users_sessions)
donc mon objectif est d'afficher le nom et prenom (name et firstname) qui se trouve dans la troisieme table user_profil.
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 13:57
par xTG
SELECT * FROM whoisonline AS t_une, devolia_rsed_users_sessions AS t_deux, user_profile AS t_trois WHERE t_une.cIpName = t_deux.id AND t_deux.id = t_trois.id
Bah rajouter la dernière table comme pour la seconde.

Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 14:11
par olivxii
j'ai modifier mais erreur sql
Code : Tout sélectionner
$sql = "SELECT * FROM whoisonline as t_une JOIN devolia_rsed_users_sessions as t_deux, devolia_rsed_user_profil as t_trois ON t_une.cIpName AND t_deux.IP = t_trois.id WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))";
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 14:36
par xTG
Si tu utilises la syntaxe ANSI c'est pas ainsi qu'on fait une double jointure.
SELECT t_trois.nom, t_trois.prenom, t_une.ip
FROM (whoisonline as t_une INNER JOIN devolia_rsed_users_sessions as t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil as t_trois ON t_deux.id = t_trois.id
WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))
Voilà si je ne me suis pas trompé, je ne suis pas un grand adepte de cette façon de rédiger les requêtes alors bon... :/
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 14:48
par olivxii
Parse error: syntax error, unexpected T_STRING in /public_html/grpminfo-site/face/devoliarsed-custom/themes/default/includes/php/getOnlinePeople.php on line 20
$sql = SELECT FROM (whoisonline AS t_une INNER JOIN devolia_rsed_users_sessions AS t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil AS t_trois ON t_deux.id = t_trois.id
WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))
$result = mysql_query($sql);
$nbResult = mysql_num_rows($result);
echo 'visiteur en ligne: '.$nbResult;
ligne 20
$sql = SELECT FROM (whoisonline AS t_une INNER JOIN devolia_rsed_users_sessions AS t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil AS t_trois ON t_deux.id = t_trois.id
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 15:53
par moogli
hum tu a mis ça comme ça ?
et ça te choque pas ? il manque pas quelque chose pour définir une chaine de caractère ?
Pour être
le type string dans la doc
@+
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 15:59
par olivxii
je me suis apercu de mon erreur et j'ai modifié comme cela
$sql = "SELECT t_trois.name, t_deux.IP, t_une.cIpName FROM (whoisonline AS t_une INNER JOIN devolia_rsed_users_sessions AS t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil AS t_trois ON t_deux.id = t_trois.id
WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))";
$result = mysql_query($sql);
$nbResult = mysql_num_rows($result);
echo 'visiteur en ligne: '.$nbResult;
mais le soucis c'est que ca m'indique 0 visiteur
http://fr-findshare.grpminfo.fr/devolia ... index1.php
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 16:04
par xTG
C'est que la jointure se fait sur le mauvais champs alors.

Ou bien que la requête renvoie une erreur que tu n'interprète pas.
Essayes ceci :
$result = mysql_query($sql)or die(mysql_error());
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 16:05
par moogli
heu ben moi je vois Parse error: syntax error, unexpected T_STRING in /p********/includes/php/getOnlinePeople.php on line 20
Pour ce qui est du résultat donne nous les schéma des tables (create table) que l'on puisse voir cela de plus pret
@+
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 16:06
par olivxii
j'ai pas de retour ...
http://fr-findshare.grpminfo.fr/devolia ... index1.php
en faite je croit qu'il ne veux pas ecrire de lettre mais que des chiffres .. tout a lh'eur je sais plus quelle champs j'avais mis et ca m'indiquais 8 visiteurs .. en fait c'est la position de mon uid .
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 18:06
par moogli
je réitère ma demande
- Schéma des tables (create table)
- Explication claire des relations entre les tables
- ré explication simple de ce que tu souhaite (pour le cas ou

)
@+
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 19:06
par olivxii
en faite je voudrais recuperer des infos sur une table mais c'est infos ne varie pas quand l'on se connect et ne sont pas en rapport avec les autre tables.
en image de table 1 a table 3
donc en faite ce que je desire c'est afficher ne nom et prenom de la personne connecté.
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 19:16
par xTG
Pour ce que j'en vois tu n'as aucun lien entre la table whosonline et les deux autres.
Tous les champs n'ont aucune concordance de type.
Comment veux-tu pouvoir les lier, ce n'est pas possible. :/
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 19:18
par olivxii
bais oui c'est ce que je voit .. y a pas de solution ?
Re: requette sur plusieurs tables
Posté : 09 janv. 2011, 19:21
par xTG
Comment faire le lien entre le chien de mon grand père et le chat de ma voisine ?
On utilise : Nombre de pattes ? Nombre de dents ? Ou peut être le nombre de narine ?
Hum je pense qu'on pourra chercher une solution pendant longtemps. :p
Il te faut l'id de la personne dans ta table whosisonline, sinon tu ne t'en sortiras pas.