Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2006, 23h34   #1
Invité régulier
 
Inscription : septembre 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 25
Points : 6
Points : 6
Par défaut Eliminer les rédondences dans une jointure de tables

Salut à tous,
g un sérieux problème. S8 débutant en PostgreSQL. J'essaie depuis longtemps déjà de résoudre le problème suivant.

J'ai plusieurs tables (3): l'une contient des address (Addresse), l'une des numéros de téléphone (Telephone) et la dernière des compagnies (Company).
Elles se présentent à peut près comme ceci (simplifié):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Address:
Rue | code_postal | company_id 
------------------------------
      |                  | 123
      |                  | 123
      |                  | 456
      |                  | 456 
      |                  | 324
 
Telephone:
numero_buro | numéro_portable | company_id
---------------------------------------------
015489789   | 061235897         | 123 
033589631   | 065321477         | 123
015489637   | 064123588         | 456
033548794   | 064987532         | 456
033333333   | 066666666         |324
 
Company:
name | middlename | firstname | company_id
---------------------------------------------
eric   |                  | Bouyot   | 123
jacky |                  |Dubois     | 456
Geoge|                  |Postgre   | 324
Ce ke j'aimerais, c faire une requète ki me donne les infos suivantes: name, firstname, numéro_buro, numéro_portable.

Pour cela, je procède comme suit:

SELECT a.rue, a.code_postal, t.numero_buro, t.numero_portbale, c.name, c.firstname FROM address as a, telephone as t, company as c WHERE c.compay_id = t.company_id
c.company_id = a.company_id;

Le résultat obtenu ne me satisfait pas. Dans le k par expleme de la table téléphone où pour par exemple dans le champ company_id on a 2 identiques, j'aimerai avoir la deuxième ligne de nouveau sur une colonne pour éviter des lignes répétitive.

Est-ce cela possible?

Merci pour toute aide!
odi_9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2006, 10h52   #2
Invité régulier
 
Inscription : mai 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 4
Points : 7
Points : 7
Si je comprends bien, tu souhaites obtenir un résultat dont une colonne contient l'identifiant d'une compagnie et une autre contient la liste des numéros de téléphone de cette compagnie.

Si c'est le cas, ceci requiert l'opérateur COLLECT défini dans SQL2003 qui, à ma connaissance, n'est pas implémenté sous postgresql.

Stéphane.

Ps : pour tes prochains messages évitent les abbréviations. Ca permettra a tout le monde de comprendre plus vite et d'avoir envie de te répondre.
stephane.jean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2006, 16h19   #3
Invité régulier
 
Inscription : septembre 2006
Messages : 25
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 25
Points : 6
Points : 6
Meri pour ta réponse,
mais c'est pas tout à fait ca. En fait je voudrais bien une ligne line seulement pour "company_id". Ca voudrais dire, au lieu d'avoir plusieurs lignes avec le meme "company_id", j'aimerais ajouter plutot davantage de colonne. Ceci parce ke j'aimerais exporter la table résultante dans un fichier pour groupwise. donc je voudrais une seule company_id avec toutes ses informations. Est-ce cela possible?

Je ne sais pas si je suis assez clair dans mon explication. Sinon possez des questions.

Merci

odi_9
odi_9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h34.


 
 
 
 
Partenaires

Hébergement Web