JeuWeb - Crée ton jeu par navigateur
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)

Pages : 1 2 3


RE: Jointure ordonnée - Sephi-Chan - 30-01-2013

Moi j'aimerai savoir s'il y a un lien entre le type (ABA, ABG) et la valeur (5, 10, 20).
Est-ce qu'il y a d'autres types que ces deux là ?
Peut-on les codifier comme des nombres ?

En l'attente d'information, je suggère simplement cette solution qui retourne les valeurs voulues.


SELECT Joueur.name, MAX(type)
FROM Joueur
LEFT JOIN maison ON Joueur.joueur = Maison.joueur
GROUP BY Joueur.joueur


Wells, quand tu demandes de l'aide, essaye de donner toutes les clés qui nous permettront de le faire. C'est pénible et inefficace de te tirer les vers du nez. Smile


RE: Jointure ordonnée - srm - 30-01-2013

Je suppose que ABG n'est pas la valeur max possible, que tu peux avoir ABZ mais que tu veux ABG en premier, donc voici ma requête :
SELECT Joueur.name,
(SELECT TYPE FROM maison WHERE maison.joueur = joueur.joueur
ORDER BY IF(TYPE = 'ABG', CONCAT('0', TYPE), CONCAT('1', TYPE)) ASC LIMIT 1) AS TYPE
FROM Joueur

http://sqlfiddle.com/#!2/4b07f/35


RE: Jointure ordonnée - Roworll - 30-01-2013

(29-01-2013, 05:07 PM)Wells a écrit : Edit: le ORDER BY ne change rien à l'affaire, je ne vous aurais pas déranger pour si peu sinon Wink

Et pourtant, ORDER BY est une des techniques pour résoudre ton problème.
Il faut juste penser à utiliser une sous requête.


SELECT Joueur.name,Type
FROM Joueur
LEFT JOIN (
SELECT * FROM maison ORDER BY valeur DESC
) AS maison
ON Joueur.Joueur=Maison.Joueur
GROUP BY Joueur.joueur

J'ai arbitrairement mis un ORDER BY valeur car comme le fait remarquer Sephi-Chan à très juste titre, ta requête est loin d'être claire.
Personne à part toi n'a une idée précise des règles qui régissent l'affichage et l'organisation de tes données. En gros, on ne sait pas pourquoi et ABG doit apparaitre au lieu d'ABA et sur quels critères tu te bases.


RE: Jointure ordonnée - Wells - 30-01-2013

Héhé, je me fait gronder par Sephi, alors je vais essayer de vous donnez toutes les clés.

En gros mes joueurs peuvent avoir deux types abonnement (point VIP chez moi)

les ABG (ABonnement Gold) et les ABA (Abonnement Arrivée)

A leur arrivée dans le jeu, les joueurs (tous), reçoivent 20 ABA.

Ils peuvent ensuite acheter des ABG.


Ce que je veux, c'est donc une ligne par joueur qui va me dire cb il a de point VIP et le type.

Si il a que du ABA ou que du ABG, pas de soucis.

Mais il peut avoir les deux en même temps, hors dans ce cas, je veux simplement considérer qu'il n'a que le ABG.

D’où ma requete qui ne doit retourner QU'UNE ligne par joueur, mais en "jointant" de préférence sur une ligne ABG que sur une ligne ABA.


RE: Jointure ordonnée - niahoo - 30-01-2013

Heu mais pourquoi tu ne mets pas deux champs ABG et ABA dans ta table joueurs ??


RE: Jointure ordonnée - Ter Rowan - 30-01-2013

(30-01-2013, 12:14 PM)niahoo a écrit : Heu mais pourquoi tu ne mets pas deux champs ABG et ABA dans ta table joueurs ??

+1


RE: Jointure ordonnée - Roworll - 30-01-2013

Donc tu as la solution proposée par oxman ou ça:

SELECT Joueur.name,Type, valeur
FROM Joueur
LEFT JOIN (
SELECT * FROM maison ORDER BY type DESC
) AS maison
ON Joueur.Joueur=Maison.Joueur
GROUP BY Joueur.joueur
.

L'un dans l'autre, à l'instar des deux intervenants ci-dessus, je trouve que tu te compliques un peu la vie.


RE: Jointure ordonnée - Wells - 31-01-2013

Ben parce que ça ne se fait pas comme ça normalement.

Si un jour je rajoute un troisième type d'abonnement, je rajoute un troisième champ ?

Et puis, schéma parlant, ce genre d'info n'a rien à faire dans ma table jouer (relation 0,n).

Je vous remercie, je ne souhaitais pas le faire en sous requete dans le JOIN, mais si y a pas plus propre que ça tant pis Smile


RE: Jointure ordonnée - Ter Rowan - 31-01-2013

oui tu rajoutes un troisième champ

On n'est pas sur un sujet variable, tu vas pas rajouter des champs à l'infini

La solution n'est certes pas ultra respectueuse des formes normales mais... so what ?


RE: Jointure ordonnée - niahoo - 31-01-2013

Tu vas rajouter un abonnement différent chaque semaine ?