Aller au contenu

Requête avec jointure, compter le nombre de ligne


petit-ourson

Sujets conseillés

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, DernierFilm
1 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 NombreFilm
FROM tLivre L LEFT JOIN tAuteur A ON L.idAuteur = A.idAuteur
LEFT JOIN tFilm F ON F.idAuteur = A.idAuteur
GROUP BY A.idAuteur

En espérant ne pas mettre planter dans mon explications ;o)

MErci.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...

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.idAuteur
GROUP BY A.idAuteur, A.nomAuteur;

J'éspère que cela fonctionne car je ne peut pas la tester. Croisons un maximum de doigts :P

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...