Aide pour réaliser une requete SQL

Eléphant du PHP | 440 Messages

09 févr. 2012, 12:39

Bonjour à tous,

j'aurai besoin d'une aide pour créer une requête SQL (mysql)

J'ai une table:

- utilisateur (ID_utilisateur, nom prénom etc..)
- Suivi_utilisateur ( ID_suivi_utilisateur,ID_utilisateur,Lieu, heure, etc, ID_Niveau etc..) ==> L'utilisateur peut avoir plusieurs suivi (changement de lieu, de niveau)
- Une table Niveau (ID_niveau, description du niveau)
Ex:
table Niveau

Code : Tout sélectionner

id_niveau-description 1-Niveau1 2-Niveau2 3-Niveau3 4-Niveau4 5-Niveau5 6-Niveau6 7-Niveau7 8-Niveau8 9-Niveau9
- Montant_niveau (Ci-dessous un exemple)

Code : Tout sélectionner

id-id_niveau-année-montant 1-1-2009-150 2-1-2010-175 3-2-2009-200 4-2-2010-210 5-3-2009-105 6-3-2010-115 7-4-2009-300 8-4-2010-352 9-5-2009-50


Dans ma requête je voudrait afficher donc:

SELECT nom, prénom , Suivi (lieu,), Description du niveau, Montant_du niveau pour 2009, Montant du niveau pour 2010

Est-ce possible de réaliser ce type de requête? Si oui comment ? avec des sous requête?

La requête Simple pour affiche nom, prénom, suivi, et la description du niveau j'y arrive, mais je bloque pour afficher les montant de 2009 et 2010 sur la meme ligne
ex:
Bob/ Eponge / Dijon/ Niveau 1/150 (2009)/175(2010)
mika/ barto/ Beaune/ Niveau2/200(2009)/210

merci d'avance pour vos explications.

guigui69

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 févr. 2012, 15:28

salut,

effectivement avec deux sous requête
select nom, prenom, lieu, suivis, description, (select montant from Montant_niveau where id_niveau = n1.id_niveau and année = 2009  ) as montant 2009,
(select montant from Montant_niveau where id_niveau = n1.id_niveau and année = 2010  ) as montant 2010
from utilisateur
join niveau n1 using (id_niveau);
bon a tester mais le principe est la :)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 209 Messages

09 févr. 2012, 16:14

Salut,

Est-ce que cette requête ne serait pas plus simple ?
SELECT nom, prenom, lieu, suivis, description, montant1.montant AS montant2009, montant2.montant AS montant2010
FROM utilisateur
JOIN niveau ON utilisateur.id_niveau = niveau.id_niveau
JOIN montant montant1 ON montant1.id_niveau = niveau.id_niveau
JOIN montant montant2 ON montant2.id_niveau = niveau.id_niveau
Si tu as possibilité de tester les temps de réponse en tout cas, je suis preneur ;)