Aide pour une requête

Aide pour une requête - SQL/NoSQL - Programmation

Marsh Posté le 24-09-2007 à 15:42:52    

Bonjour, j'ai 4 tables.
1 table REVUES,1 table NUMEROS,1 table PERSONNES et une table des PRETS
 
-composition des tables :
REVUES : ID_revue,nom_revue
NUMEROS : ID_numero,id_revue,date_numero,statut_numero
PRETS : ID_pret,id_numero,id_pers,date_pret
PERSONNES : id_pers,nom,prenom,..
 
chaque revue peut avoir plusieurs numeros et chaque numero peut etre preté à une personne. pour avoir un historique on garde la liste des prets.Donc à chaque fois qu'une personne emprunte une revue effectue un nouvel enregistrement dans la table des prets.
 
Ce que je voudrai c'est pouvoir sortir pour chaque revue, avoir la liste de tous ses numeros,avec en face le nom de la personne qui est sensé l'avoir actuellment, la date de son pret,et le statut du numero (detruit,en pret,reçu,etc...)
Pour avoir le dernier enregistrement de pret j'avais pensé faire un MAX(date_pret) mais je n'arrive pas à avoir 1 seule ligne pour chaque numero. A cause du group by il m'en met beaucoup plus.
Voici ma requete pour le moment :

Code :
  1. SELECT  l.id_num_revue,MAX(l.date_pret)
  2. FROM NUMEROS n,liste_des_prets l,personne p
  3. WHERE n.id_num_revue = l.id_num_revue
  4. AND l.id_pers = p.id_pers
  5. GROUP BY l.id_num_revue


la j'ai la derniere date de pret avec l'id de la revue, mais comment avoir le nom et le statut qui vont avec ?

Reply

Marsh Posté le 24-09-2007 à 15:42:52   

Reply

Marsh Posté le 24-09-2007 à 16:24:44    

bonjour,
passe déjà par inner join à la place de la clause where ^^
à l'arrache, je proposerai une requete comme ca:

Code :
  1. SELECT revues.id_revue, nom_revue, nom, prenom from revues inner join numeros
  2. on revues.id_revue = numeros.id_revue inner join prets on prets.id_numero = numeros.id_numero inner join
  3. personnes on prets.id_pers = personnes.id_pers etc.


Message édité par jpcheck le 24-09-2007 à 16:25:08
Reply

Marsh Posté le 24-09-2007 à 16:42:44    

faut un left outer join sur "pret", parce la revue n'est pas forcément prêtée en ce moment

Reply

Marsh Posté le 24-09-2007 à 16:43:53    

ps : et une date de retour serait pas un luxe. non seulement ça permet de savoir si la personne à rendu le numéro (ça peut servir...) mais en plus ça évite un max parfaitement inutile

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed