|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Kevin Pire Inscription : mars 2010 Messages : 10 ![]() |
Bonjour,
ça fait un moment que je cherche mais bon j'ai franchement pas un bon niveau en sql et je n'arrive pas à trouver. Voici mon cas : Prenons ces 2 tables: ID | nom | prénom | age --------------------------- 1 | dupont | jean | 32 2 | dupuis | pierre | 38 3 | dethier | paul | 45 ET ID | proprio_ID | objet | valeur --------------------------------- 1 | 1 | bijoux | 1000 2 | 1 | meuble | 5000 3 | 2 | bijoux | 1200 4 | 2 |peintures| 3000 5 | 3 |peintures| 8000 Existe-t-il une requête SQL qui retournerait cela: ID | nom | prénom | age | bijoux | meuble | peintures ----------------------------------------------------------- 1 | dupont | jean | 32 | 1000 | 5000 | ---- 2 | dupuis | pierre | 38 | 1200 | ---- | 3000 3 | dethier | paul | 45 | ---- | ---- | 8000 Un super GRAND merci à celui qui veux bien me répondre |
|
|
00
|
|
|
#2 | ||
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Ce que tu souhaites faire est un PIVOT qui ne fait pas partie des clauses standard du langage SQL pour la simple raison qu'il n'est pas possible à l'avance de connaître le nombre de colonnes que retournera un tel type de requête.
Si tu travailles avec SQL Server ou Access, tu trouveras une clause PIVOT dans les extensions du langage non conformes à la norme, avec les limites énoncées précédemment. Avec tout autre SGBD, tu pourras écrire une requête de cette forme, mais tu devras la faire évoluer en fonction des types d'objets que tu dois prendre en compte : Code :
__________________
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 ![]() |
||
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Kevin Pire Inscription : mars 2010 Messages : 10 ![]() |
Super! merci beaucoup pour la leçon. Cela dit, il me reste encore une petite énigme et vu que tu as l'air vraiment calé, je me permet d'en profiter
Si le cas était le suivant : ID | nom | prénom | age --------------------------- 1 | dupont | jean | 32 2 | dupuis | pierre | 38 3 | dethier | paul | 45 ET ID | proprio_ID | objet | valeur --------------------------------- 1 | 1 | bijoux | un peu 2 | 1 | meuble | beaucoup 3 | 2 | bijoux | un peu 4 | 2 |peintures| beaucoup 5 | 3 |peintures| énormément En considérant qu'il n'y aura pas deux entrées du même objet pour le même propriétaire existe-t-il toujours une requête SQL qui retournerait cela: ID | nom | prénom | age | bijoux | meuble | peintures ----------------------------------------------------------- 1 | dupont | jean | 32 | un peu | beaucoup | ---- 2 | dupuis | pierre | 38 | un peu | ---- | beaucoup 3 | dethier | paul | 45 | ---- | ---- | énormément Mon exemple est un peu niais mais bon ce que je veux dire par là, c'est : Dans la solution que tu m'as généreusement donnée est-il possible de grouper les résultats par ID mais non pas de faire une somme des valeurs mais de dire que l'on souhaite que la valeur prenne le pas sur NULL. Je ne sais pas si je suis très claire. Encore un grand MERCI. |
|
|
00
|
|
|
#4 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Il y a d'autres fonctionS de regroupement que SUM... Essaye un peu avec MAX
__________________
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
|
|
|
#5 |
|
Invité de passage
![]() Kevin Pire Inscription : mars 2010 Messages : 10 ![]() |
Merci beaucoup, c'est vraiment génial de pouvoir avoir les conseils d'un vrai pro.
|
|
|
00
|
|
|
#6 | ||
![]() ![]() |
Il y a plus court et plus efficace comme requête de PIVOT :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com