Forum TourDeJeu · Règles du forum | Aide Recherche Membres |
Bienvenue invité ( Connexion | Inscription ) | Recevoir à nouveau l'email de validation |
Sybler |
Ecrit le : Mercredi 15 Décembre 2004 à 02h28
|
Ouf Groupe : Membre Messages : 453 |
Bon, mon probleme est simple, mais demande un peu de mise en contexte:
--> j'ai deux tables, une table d'utilisateurs et une table de perso disons. table session (id, status, user); table perso (id, user, nom_perso); Bon, évidament, je met juste les champs requis pour l'exemple, donc me dite pas de mettre un champs de plus dans session ... ou un truc du genre: ---- Donc, mon but est de savoir quel est l'id de session à partir uniquement du mon de perso, ou de l'id... Présentement, je fais ceci (ca marche, mais je veux savoir comment l'optimiser) $query = "SELECT user FROM perso WHERE nom_perso='$current_perso';"; $result = mysql_query($query); $row = mysql_fetch_row($result); $query = "SELECT id FROM session WHERE user='" . $row[0] . "';"; $result = mysql_query($query); $row = mysql_fetch_row($result); $session_id = $row[0]; .... wow, c'est long.... donc je voulais savoir quel était la requete qui permetterais de racourcir tout ca. genre (ca je pense pas que ca marche): $query = "SELECT id FROM session WHERE user=(perso.user:perso.nom_perso=$current_perso));"; Bon... z'avez une idée ? car présentement, c'est ma GROSSE faiblesse... et ca génère souvent beaucoup de code pour rien... -------------------- |
gorgu |
Ecrit le : Mercredi 15 Décembre 2004 à 04h24
|
Ouf Groupe : Membre Messages : 417 |
$query = "SELECT session.id FROM perso,session WHERE perso.nom_perso='$current_perso' and session.user=perso.user;";
-------------------- |
xaero |
Ecrit le : Mercredi 15 Décembre 2004 à 15h41
|
Ouf Groupe : Membre Messages : 593 |
sinon tu peux faire aussi un union all entre les deux requetes :
requete1 union all requete2 tout dépends de ta version de mysql il me semble. -------------------- |
Magauss |
Ecrit le : Mercredi 15 Décembre 2004 à 15h55
|
Kid Groupe : Membre Messages : 12 |
Ou bien encore un LEFT JOIN :
SELECT session.id FROM perso LEFT JOIN session ON perso.user = session.user WHERE perso.nom_perso='$current_perso'; |
Grouik |
Ecrit le : Mercredi 15 Décembre 2004 à 22h25
|
Unregistered |
LEFT / RIGHT JOIN, UNION [ALL]... bande de psychopathes, va
Une jointure tout ce qu'il y a de traditionnel fera parfaitement l'affaire (gorgu version). Maman, j'ai peur |
|
Sinclair |
Ecrit le : Jeudi 16 Décembre 2004 à 11h53
|
||
Pro Groupe : Membre Messages : 133 |
Justement ! Y'a t'il une différence entre une jointure "classique" (where tbl1.id=tbl2.id) et une jointure avec left join ? -------------------- Concepteur/Développeur de guildes.jpc.free.fr
|
||
Magauss |
Ecrit le : Jeudi 16 Décembre 2004 à 12h38
|
||||
Kid Groupe : Membre Messages : 12 |
Sur cette requete: $query = "SELECT session.id FROM perso,session WHERE perso.nom_perso='$current_perso' and session.user=perso.user;"; Si l'utilisateur n'a pas de session, le résultat sera vide sur cette requête: SELECT session.id FROM perso LEFT JOIN session ON perso.user = session.user WHERE perso.nom_perso='$current_perso'; Si l'utilisateur n'a pas de session, le résultat sera NULL (une ligne avec un id de session à NULL) Pour l'UNION, je ne vois pas comment obtenir un résultat satisfaisant en l'utilisant (puisque le but de la manoeuvre semble être d'obtenir une intersection entre deux tables) |
||||
gorgu |
Ecrit le : Jeudi 16 Décembre 2004 à 15h29
|
Ouf Groupe : Membre Messages : 417 |
les join sont trés trés pratiques lorqsu'il y a plus d'une ligne en sortie car elles permettent de jouer sans trop trop de soucis avec les lignes n'ayant pas de correspondance (vu qu'elle retournent null)
Mais il faut bien testé son truc les premiers coups et lire pas mal d'exemples (suffit de faire un google) pour comprendre comment cela marche. ( left ou right that is the question ) -------------------- |
Sinclair |
Ecrit le : Jeudi 16 Décembre 2004 à 16h35
|
Pro Groupe : Membre Messages : 133 |
ok ... merci pour l'info ...
Pour l'instant, les jointure traditionnelles ne vont trés bien je vais continuer comme ça -------------------- Concepteur/Développeur de guildes.jpc.free.fr
|