petit-ourson Posté 5 Juillet 2007 Posté 5 Juillet 2007 Bonjour, J'ai un petit soucis avec uen requête (à moins que ma mémoire flanche). J'ai trois tables : tAuteur (idAuteur, nomAuteur); tLivre (idLivre, idAuteur, nomLivre); tFilm (idFilm, idAuteur, nomFilm, dateRealisation); Chaque auteur peut être relié à 0 ou plusieurs livres et à 0 ou plusieurs films. Ce qui nous donne un jeu d'essai du style : tAuteur :1,'Auteur Un'2,'Auteur Deux'3,'Auteur Trois'4,'Auteur Quatre' tLivre :1,1,'Livre Un'2,2,'Livre Deux'3,3,'Livre Trois'4,1,'Livre Un Bis' tFilm :1,1,'Film Un', '2007-01-02'2,2,'Film Deux', '2007-01-02'3,3,'Film Trois', '2007-01-02'4,3,'Film Trois Bis', '2008-01-02' J'essaie de trouver une requête qui me fournirrait comme résultat : idAuteur, nomAuteur, NombreLivre, NombreFilm, DernierFilm1 Auteur Un 2 1 'Film Un'2 Auteur Deux 1 1 'Film Deux'3 Auteur Trois 1 2 'Film Trois Bis'4 Auteur Quatre 0 0 null J'arrive à tout récupérer sauf le dernier film. :s SELECT A.idAuteur, A.nomAuteur, COUNT(DISTINCT idLivre) AS NombreLivre, COUNT(DISTINCT idFilm) AS NombreFilmFROM tLivre L LEFT JOIN tAuteur A ON L.idAuteur = A.idAuteurLEFT JOIN tFilm F ON F.idAuteur = A.idAuteurGROUP BY A.idAuteur En espérant ne pas mettre planter dans mon explications ;o) MErci.
ymhotep Posté 20 Juillet 2007 Posté 20 Juillet 2007 Salut, Je pense qu'en utilisant les requêtes imbriquées cela doit fonctionner. Tu peux essayer par exemple : SELECT A.idAuteur, A.nomAuteur, COUNT(DISTINCT idLivre) AS NombreLivre, COUNT(DISTINCT idFilm) AS NombreFilm, T.dernier_film FROM tLivre L LEFT JOIN tAuteur A ON L.idAuteur = A.idAuteur LEFT JOIN tFilm F ON F.idAuteur = A.idAuteur LEFT JOIN ( SELECT idAuteur, nomFilm AS dernier_film FROM tFilm F1 WHERE dateRealisation = ( SELECT max(dateRealisation) FROM tFilm F2 WHERE F2.idAuteur = F1.idAuteur ) ) T ON T.idAuteur = A.idAuteurGROUP BY A.idAuteur, A.nomAuteur; J'éspère que cela fonctionne car je ne peut pas la tester. Croisons un maximum de doigts
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant