2009-08-27 6 views
0

Salut à tous, je me demande quelle est la meilleure façon de faire ce qui suit est:Interroger plusieurs tables et renvoyer uniquement un seul tableau?

Recherche jusqu'à 5 tables (dépend de l'entrée utilisateur) retirer les résultats et le retour un seul tableau. Disons que je interroge la table A et que les résultats sont stockés en tant que résultat (retour de pg_query() fn), dois-je aller de l'avant et les convertir en tableau, puis continuer à ajouter les résultats des requêtes suivantes? Si oui puis-je m'en tirer en utilisant simplement la fonction array_merge()?

Répondre

1

On dirait que vous voulez un UNION.

+0

Je préfère interroger chaque table (en fait une vue) de manière indépendante et ensuite joindre les résultats en utilisant PHP, d'où ma pensée d'utiliser le array_merge() fn. –

+0

Okay. Alors oui, 'array_merge()' est ce que vous voulez. – chaos

0

utilisation d'une union:

SELECT col1, col2 
    FROM a 
UNION 
SELECT col1, col2 
    FROM b 
0

En utilisant une UNION pourrait être la réponse que si vos résultats vont être faibles. Les UNION imposent un peu sur le serveur DB et certaines DB ont du mal à les optimiser. En utilisant une procédure de stockage ou en effectuant 5 requêtes puis en procédant à une fusion de matrice, le serveur de base de données peut mettre en cache certains résultats et améliorer les performances de la base de données.

Si le jeu de résultats va être faible et qu'il n'y aura pas beaucoup d'appels, alors utiliser UNION devrait être bon.

+0

Le jeu de résultats sera dans les dizaines de milliers. –

Questions connexes