J'ai une vue définie comme: Ce que je voudrais faire est d'obtenir l'intersection des tableaux dans AGGFIELD code> avec quelque chose comme: p >
SELECT intersection(AggField) FROM View1 WHERE Field2 = 'SomeValue';
3 Réponses :
La chose la plus proche d'une intersection de matrice que je peux penser, c'est que:
> select * from stuff; a --------- {1,2,3} {1,2,3} {3,4,5} (3 rows) > select array_intersect_agg(a) from stuff; array_intersect_agg --------------------- {3} (1 row)
sur Postgres 9.1 La fonction AGG doit être comme "" "Créer un agrégat array_intersect_agg (integer []) (sfunc = array_intersect, stype = int4 []);" "
@Rescommunes: La version 9.1 est-elle ajoutée correcte? Je n'ai pas de 9,1 pratiques pour le tester moi-même.
Oui c'est bon. En outre, je ne sais pas si 9.1+ est l'endroit où la différence est ou non (pourrait être plus tôt).
Alternativement: installer l'extension intarray qui fournit un opérateur d'intersection ( & code>)
Qu'est-ce que DT (E)?
@smaiakov c'est un alias pour la table dérivée de sorte que la requête sache qu'une "table" nommée dt code> fait référence à ce que le syndicat et que c'est "colonne" est nommé
E code>.
La réponse acceptée n'a pas fonctionné pour moi. C'est comme ça que je l'ai réparé.
Il est un peu tardif de répondre à cette question, mais peut-être que quelqu'un en aurai besoin, alors j'ai décidé de partager quelque chose que j'ai écrit cause n'a pas trouvé de solution prête pour l'intersection d'un nombre de tableaux. Alors voici ici. Cette fonction reçoit une matrice de matrices, s'il s'agit uniquement d'une seule matrice, la fonction renvoie une première matrice, s'il y a 2 tableaux de réseaux de fonctionnement 2 tableaux et renvoie le résultat, s'il s'agit de 2 matrices, la fonction prend une intersection de 2 premiers tableaux, le stocke Dans certaines variables et boucles à travers tous les autres tableaux, intersect chaque ensemble suivant avec des résultats stockés et des magasins entraîne une variable. Si le résultat est null, il existe avec NULL. Dans la variable et la variable qui stocke une matrice avec des données interagites renvoyées de la fonction. Voici le code pour valider les travaux. strong> p>