PostgreSQL: Comment trier les tables triées par date
J'ai 3 différentes requêtes SQL à partir de 3 différentes tables non liées (toutes l'aide de la LIMITE et de l'ORDRE).
Je voudrais fusionner et de trier les résultats selon le champ "date" (qui apparaît dans chacun d'eux)
Qu'est-ce que le SQL pour ce faire?
source d'informationauteur GabiMe
Vous devez vous connecter pour publier un commentaire.
Le meilleur moyen est de créer une nouvelle table contenant les champs communs à partir de trois autres tables et ajouter un index sur la commune de champ de date. Les trois tables doivent contenir une clé étrangère de liaison à la table commune. Avec cette conception de la requête devient simple:
Si vous avez aussi besoin de données à partir de la plus des tables, vous pouvez utiliser GAUCHE Rejoint de sélectionner également que les données dans la même requête.
Si vous ne pouvez pas changer votre design et de la performance n'est pas un problème, alors vous pouvez utiliser de l'UNION de TOUS pour combiner les résultats de tous les trois tables avant de les trier:
Noter que le ci-dessus ne fonctionnera que si toutes les tables ont la même structure. Si vous avez des champs qui apparaissent dans un tableau, mais pas dans d'autres, alors vous devriez vous omettez de le SÉLECTIONNER ou else return NULL pour cette colonne dans les autres tableaux. Par exemple, si:
table1
a des colonnesa
b
c
etdate
.table2
a des colonnesb
c
etdate
.table3
a des colonnesa
c
etdate
.Puis utilisez ceci:
Pour les meilleurs résultats, appliquer l'ORDRE PAR /LIMITER le plus tard possible, et d'éviter dans les sous-requêtes.