Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
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 20/06/2011, 19h10   #1
Membre régulier
 
Inscription : mars 2002
Messages : 204
Détails du profil
Informations personnelles :
Localisation : Tunisie

Informations forums :
Inscription : mars 2002
Messages : 204
Points : 77
Points : 77
Par défaut Requêtes avec des champs de type array

Je suis en train de trvailler sur un outil de gestion de projet avec PHP et postgresql 9.

J'ai une table regroupant les taches qui s'appelles tasks.
Pour simplier le problème, la table tasks contient deux champs (id, task).
Pour gérer les antécédances, j'ai une table predecessors avec deux champs (task_id, predecessor,id)

Je voudrais simplifier ceci en modifiants la table taks ainsi ((id, task, predecessors) où prédecessors est un tableau d'entier avec la liste des id de toutes les taches prédecessurs.
Est-ce possible?
Si oui comment faire une requête pour avoir un résultat avec les données suivantes

task_id, task, predecessor_id, predecessor_details

Merci
ZIED est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 20h17   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 508
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 508
Points : 2 040
Points : 2 040
Il faut utiliser la fonction unnest() pour transformer le tableau en un ensemble de lignes. Le résultat de cette fonction peut être utilisé comme si c'était l'ancienne table.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h09   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
Citation:
Envoyé par ZIED Voir le message
Je voudrais simplifier ceci en modifiants la table taks ainsi ((id, task, predecessors) où prédecessors est un tableau d'entier avec la liste des id de toutes les taches prédecessurs.
Est-ce possible?
C'est possible comme on vous l'a indiqué, mais peu performant. En effet il n'est pas possible d'optimiser les accès à un tableau alors qu'avec une table oui !
Résultat, vous perdrez beaucoup en terme de performances....
En sus les opérations NEST et UNNEST ne sont pas bijectives ! (sauf à rajouter une contrainte de partition afin de respecter la forme normale de partitionnement...)

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro 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 22h36.


 
 
 
 
Partenaires

Hébergement Web