Jointure ordonnée - 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 : Jointure ordonnée (/showthread.php?tid=6200) |
Jointure ordonnée - Wells - 29-01-2013 Bonjour à tous, je me pose une question, je doute que ca soit faisable simplement mais bon sait on jamais ^^ J'ai une table avec trois colones: Code : Joueur - Type - Valeur Contenant : Code : 1 - ABA - 5 Je fait une requete du style: Code : SELECT * FROM table GROUP BY Joueur Cependant, j'aimerais que ma requete jointe en priorité sur les lignes ABG. Comment faire ? RE: Jointure ordonnée - Sephi-Chan - 29-01-2013 Qu'est-ce que ça donne si tu ajoutes un ORDER BY valeur ?PS : tu ne fais aucune jointure. RE: Jointure ordonnée - Myrina - 29-01-2013 Déjà, tu ne peux pas faire un SELECT comme cela. Les colonnes doivent être dans le GROUP BY ou des fonctions (d’agrégation normalement) Ensuite, le GROUP BY n'empêche pas le ORDER BY Type DESC RE: Jointure ordonnée - Xenos - 29-01-2013 La présence d'un GROUP BY n'oblige pas à lister explicitement les noms de colonne, non? Le * remplace tous les noms, dont la colonne du GROUP BY. Je comprend pas le "en priorité sur les lignes ABG"... Si on groupe par joueur, on groupe par joueur, point, peu importe les valeurs de la colonne "type". En revanche, si tu veux grouper par type puis par joueur, GROUP BY `Type`, `Joueur` devrait marcher (je suis pas sûr pour autant: à tester). RE: Jointure ordonnée - Sephi-Chan - 29-01-2013 Pour faire des tests : http://sqlfiddle.com/#!2/1f17e/9 RE: Jointure ordonnée - Wells - 29-01-2013 Ouais bon, je me rend compte qu'en voulant simplifié ca veut plus rien dire. Je reprend donc pour etre plus clair. J'ai DEUX tables: joueur et maison dans maison se trouve mes ABA/ABG au format: Code : Joueur - Type - Valeur Je fait donc un : Code : SELECT Joueur,Type Ce qui me retourne: Code : 1 ABA Hors moi je veux que le ABG soit prioritaire: Code : 1 ABG Voila, je pense que c'est plus clair la Edit: le ORDER BY ne change rien à l'affaire, je ne vous aurais pas déranger pour si peu sinon RE: Jointure ordonnée - Myrina - 29-01-2013 Effectivement, on comprend mieux. Donc, comme je l'ai déjà dit, il faut que ta colonne Type soit une fonction du style MAX(Type) sauf que je ne pense pas que cela fonctionnera avec des chaines de caractères RE: Jointure ordonnée - archANJS - 29-01-2013 À quoi font référence ABA et ABG? Ne peuvent-ils pas être remplacés par 1 et 2? RE: Jointure ordonnée - Xenos - 29-01-2013 ou avec GROUP_CONCAT(Type) en place de Type dans le SELECT? Cela rassemblerait les typages (ABA, ABG) et donc, tu pourras en faire ce qu'il te plait. Car, logiquement, si tu "group by" une colonne, c'est que le résultat des autres colonnes: soit il t'importe peu, soit il est le même pour chaque ligne. Or, ici, ce n'est pas le cas. Sinon, un group by Joueur, Type peut faire l'affaire. Pourquoi souhaites-tu que ABG soit "prioritaire"? Il y a peut-être d'autres méthodes alternatives à la suite que tu comptes créer, et qui faciliteront cette étape de requête SQL. Dernièrement, comme le souligne archANJS, si c'est possible de changer les ABG/ABA en une énumération et de traiter ducoup des nombres, cela te permettra d'ordonner les typages comme bon te semble, le typage associé à la valeur 0 étant le plus prioritaire (ou le moins, si on utilise MAX et pas MIN). RE: Jointure ordonnée - srm - 30-01-2013 Pour ceux qui veulent s'amuser : http://sqlfiddle.com/#!2/4b07f/3 L'exercice est posé Je pars au boulot, je vous donne "la réponse" plus tard |