Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1003 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour une requête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour une requête

n°1614556
albertos
kikoo
Posté le 24-09-2007 à 15:42:52  profilanswer
 

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 ?

mood
Publicité
Posté le 24-09-2007 à 15:42:52  profilanswer
 

n°1614583
jpcheck
Pioupiou
Posté le 24-09-2007 à 16:24:44  profilanswer
 

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
n°1614597
MagicBuzz
Posté le 24-09-2007 à 16:42:44  profilanswer
 

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

n°1614599
MagicBuzz
Posté le 24-09-2007 à 16:43:53  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Aide pour une requête

 

Sujets relatifs
Aide sur requete SQL avec variable PHPBesoin d'aide pour requête SQL
Aide pour créér une requete pour un regroupement[RÉSOLU] Aide pour une requete MySQL
besoin d'aide pour requete mysqlAide requete oracle, sum sur 2 tables différentes
Aide creation requete oracleNombre d'occurences => toujours besoin d'aide
Executer une requête sql à l'aide de C# qui retourne un seul enregistrbesoin d'aide pour requete "bizarre"
Plus de sujets relatifs à : Aide pour une requête


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR