|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
Bonjour tout le monde,
Voici ma problématique : J'ai 3 tables sur Postgre 8 : Select * FROM batiment : Select * from caractéristique : Ce que je souhaiterais, c'est avoir comme résultat sur Postgre : Là, il s'agit d'un exemple simplifié de ma problématique. Dans la réalité, il y a plus de 100 occurences dans ma table caractéristique. Pour certains bâtiments, il y a des caractéristiques définies et d'autre non. De plus, il est très fréquents de rajouter de nouvelles caractéristiques et d'en supprimer certaines. Vous comprendrez donc que je ne puisse pas mettre ces occurences sous forme de champs dans ma table Bâtiment. Merci, A+ |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
Bon, puisque personne ne veut répondre, j'ai déjà trouvé un début de réponse :
SELECT distinct nombatiment, largeur, longueur, hauteurPour l'instant, le résultat qui m'est renvoyé est de la forme que je souhaitai. Le problème est que si un des bâiments n'a pas toute les caractéristiques de la table "Caractéristique", celui ci est complètement chapoté et n'apparaît pas dans cette liste. Ce que j'aimerai, c'est que la ligne entière apparaissent et que pour la caractéristique qui n'est pas référencée, la cellule montre une valeur "null". A+ |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Développeur multimédia Inscription : avril 2007 Messages : 175 ![]() |
Super on a finit par trouver :
Il existe pour Postgre une extension qui s'appelle Crosstab. Elle permet exactement de faire ce que je souhaite faire : SELECT * from crosstab('SELECT car.idbat, car.idcarac, car.valeur FROM caracbat car ORDER BY 1', 'SELECT DISTINCT bat.idcarac FROM caracte bat ORDER BY 1') as ct(idbat text, "C01" text, "C02" text, "C03" text); Ainsi, même pour les occurences ayant une valeur vide dans caractéristique, celles ci apparaiassent tout de même avec la valeur "null". Enfin, il ne me reste plus qu'à reccupérer la liste des occurences de ma table "caractéristique" et de l'ajouter dans ct(......). A bientôt, |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com