Problème de jointure ? - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Problème de jointure ? (/showthread.php?tid=4569) |
Problème de jointure ? - php_addict - 05-02-2010 bonjour je vous soumets un tout petit probleme SQL qui parait tout bete mais surlequel je bloque totalement :cogne: : on a les TABLE suivantes: Code : TABLE JOUEUR TABLE RAPPORT la requete SELECT joueur1 , joueur2 FROM rapport WHERE id=123 permet d'afficher un truc du genre 1 attaque 2 mais quelle est la requete qui permet d'afficher bertrand attaque paul ? autrement dit comment joindre mes 2 champs joueur1 et joueur2 vers le champs id de la TABLE [/color]? est-ce possible d'afficher bertrand attaque paul en ne faisant qu'une seule requete ? merci de m'avoir lu :respect: j'ai un peu honte de poser cette question toute bête...:$ bonne journée à toutes et à tous RE: [SQL] probleme de jointure ? - NicoMSEvent - 05-02-2010 Code : SELECT j1.nom , j2.nom Edit : j'ai cherché ta présentation, je ne l'ai pas trouvée... je n'ai pas trouvé non plus le projet sur lequel tu es, tu pourrais compléter cette lacune, comme tu commence a être ancien ici... RE: [SQL] probleme de jointure ? - php_addict - 05-02-2010 merci pour ta reponse je vais etudier ceci, le soucis c'est qu'il faut que je fasse une troisieme jointure vers une autre table, mon exemple etait trop simple sinon pour ma presentation, des que j'ai le temps ;-) derniere petite question as tu ommis les AS (allias) , est ce preferable de les mentionner? encore merci RE: [SQL] probleme de jointure ? - Anthor - 05-02-2010 Et bien fais en une troisième ^^ Pour reprendre Nico, je mettrais un INNER et non un simple JOIN, même si c'est implicite, c'est toujours bon de le rappeler ^^ D'ailleurs je laisserais un LEFT, avec le login dans les tables de combats, c'est toujours bien dans le cas de suppression de joueurs pour pas planter toute la requête. Citation :as tu ommis les AS (allias) , est ce preferable de les mentionner?Préférable surtout que dans le cas présent, le deuxième nom remplace le premier. Dans tous les cas préférable sinon SQL le fait lui même de façon implicite. Et tout ce qui est implicite demande de la ressource. RE: [SQL] probleme de jointure ? - php_addict - 05-02-2010 (05-02-2010, 03:39 PM)Anthor a écrit : Et bien fais en une troisième ^^ merci ;-) j'ai fais un LEFT JION en effet et cela fonctionne a merveille, merci ! par contre j'ai eu beau lire la doc de sql, je ne vois pas la difference entre INNER et LEFT JOIN ... RE: [SQL] probleme de jointure ? - Sephi-Chan - 05-02-2010 Dans le cas d'un LEFT JOIN, si la clause de jointure ne trouve aucun correspondance dans la table jointe, la ligne est tout de même ajouté au jeu de résultat (et les champs concernant la table jointe sont mis à NULL). Avec un INNER JOIN (par défaut quand tu ne précise pas la nature de la jointure), la ligne est ignorée. Sephi-Chan Edit : Correction de mon inversion. RE: [SQL] probleme de jointure ? - NicoMSEvent - 05-02-2010 Sephi, c'est tout à fait ça, a part qu'il me semble que c'est exactement l'inverse ^^ En effet, le LEFT JOIN te ramène toutes les lignes de la table FROM, et celles qui ont une correspondance dans la table LEFT JOIN. Les données "manquantes" sont remplacées par des NULL Exemple : si A contient 1,2,3 et B 2,3,4 SELECT A.id,B.id FROM A LEFT JOIN B ON A.id=B.id Ce qui sera retourné sera 1,NULL 2,2 3,3 SELECT A.id,B.id FROM A INNER JOIN B ON A.id=B.id; qui correspond a la requète de la ligne suivante SELECT A.id,B.id FROM A ,B WHERE A.id=B.id; Ce qui sera retourné sera 2,2 3,3 et pour finir : SELECT A.id,B.id FROM A RIGHT JOIN B ON A.id=B.id Ce qui sera retourné sera 2,2 3,3 NULL,4 J'espère avoir un peu éclairci tout ça Edit : Source : http://dev.mysql.com/doc/refman/5.0/fr/join.html RE: [SQL] probleme de jointure ? - Crimson - 05-02-2010 C'est l'inverse non ? Ou alors j'ai mal compris la phrase. The INNER JOIN keyword return rows when there is at least one match in both tables. -> Donc n'affiche que si il y a au moins une correspondance entre les deux tables The LEFT JOIN keyword returns all rows from the left table (table_name1), even if there are no matches in the right table (table_name2). ->Affiche toutes les lignes de la table à gauche meme si sil n'y a pas de correspondance http://www.w3schools.com/sql/sql_join_inner.asp Edit: pas assez rapide. ^^ RE: [SQL] probleme de jointure ? - php_addict - 05-02-2010 merci pour toutes ces precisions, c'est genial, ca marche... |