|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : août 2005 Messages : 5 ![]() |
Bonjour tout le monde
J'ai un petit problème que je n'arrive pas à résoudre seul, je sollicite votre aide J'ai 3 tables : films,genres,pays. A chaque film correspond un genre et un pays. A chaque film correspond également le nombre d'entrées. J'aimerai, pour chaque genre distinct, obtenir : Le nom du genre, la somme des entrées pour les films de ce genre, la somme des entrées pour ce genre dans le pays 1, la somme des entrées pour ce genre dans le pays 2, la somme des entrées pour ce genre dans le pays 3, etc... Donc, sans la partie en rouge, je m'en sors très bien comme ça : Code :
Et je ne sais absolument pas comment combiner les deux.. Une idée ? |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Il faut juste faire une jointure supplémentaire sur Pays avec Films.
Ensuite, soit tu ramène en colonne le code pays, soit tu fais N requête en mettant à chaque fois "where pays.code = 1", puis 2, 3, etc. l'énoncé n'est pas très clair. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2005 Messages : 5 ![]() |
Merci de ta réponse : je précise l'énoncé :
En fait, le nombre de pays (et donc de colonnes et rouge) n'est pas connu à l'avance, il dépend du nombre d'entrées dans la table Pays. C'est là tout mon problème, je ne sais pas comment faire une requête avec un nombre de colonnes qui dépend d'une autre table. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Ca, c'est "impossible".
Je mets entre guillemets car : - En SQL "pur", on peut contourner en mettant un nombre défini en dur et LEFT OUTER JOIN sur une liste en dur de code pays : c'est crade. - Avec MySQL (peut-être d'autres SGBD) il y a une fonction qui permet de transformer des lignes en colonne. C'est pas standard, mais si c'est un TP sur MySQL, c'est peut-être ce qu'attends ton prof. Sinon, la solution universelle, standard SQL, c'est de ramener la liste des pays sous forme de ligne : c'est à dire que tu éclates le résultat par pays, avec les données par pays sur chaque ligne. => C'est alors à l'application client de faire les cumul et l'affichage en colonnes. A ce moment, il suffit de rajouter la jointure sur pays et de rajouter une colonne code pays, et l'intégrer dans le group by. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : août 2005 Messages : 5 ![]() |
C'est un effet un TP (avec MS Access..)
Merci beaucoup pour les infos Je vais voir ce que je peux faire avec ça ! (je soupçonne le prof d'avoir entré manuellement chaque pays dans sa requête pour obtenir son résultat, même si c'est pas du tout dans l'esprit du TP). Merci encore |
|
|
00
|
|
|
#6 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 446 ![]() |
Avec Access, tu peux utiliser la clause PIVOT, qui n'existe pas dans la norme SQL.
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#7 | ||
![]() ![]() |
Puisque c'est un TP avec Access, je suppose que tu dois (ou que tu as le droit) d'utiliser le résultat de la requête dans un formulaire ?
La manière la plus rationnelle est alors de faire la requête suivante : Code :
Car vouloir mettre les pays en colonne avec SQL, c'est vouloir faire de la cosmétique, ce qui n'est pas le boulot du SGBD mais du logiciel qui présente les données - dans ton cas, les formulaires ou états Access.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com