La sélection de valeurs statiques de l'union dans une autre requête
Essentiellement, mon problème est que j'ai besoin d'exécuter une requête dans Oracle que les syndicats d'une liste de valeurs statique ("Statique" dans le sens " il est obtenu à partir de quelque part d'autre que je ne peux pas obtenir à partir de la base de données, mais est en réalité arbitraire de la liste des valeurs que je fiche dans la requête) avec une liste dynamique des valeurs renvoyées par une requête.
Donc, ma requête initiale ressemble:
select * from (select ('18776') as instanceid from dual) union (<more complex query>)
Je pense, hourra! Et puis essayer de le faire avec une longue liste de valeurs statiques. S'avère, j'obtiens 'Manque la Parenthèse fermante" si j'essaie de le lancer:
select ('18776','18775') as instanceid from dual
Donc, ma question est comment puis-je intégrer une liste de valeurs statiques dans cette union?
NOTE: Ceci est un exemple simplifié du problème. La liste est générée à partir d'une API avant de me générer une requête, et donc, cette liste de "statique" des valeurs est imprévisible et arbitrairement grand. Je ne suis pas traiter avec seulement 2 valeurs statiques, il est arbitraire de la liste.
select * from (select instanceid from STATIC_INSTANCE_ID ) union (<more complex query>)
Si c'est vraiment pour être considéré comme statique, cela devrait fonctionner.Pour les fins de cette question, ils sont statiques dans le sens où ils sont transmis dans la requête que je suis de montage. Ils sont générés à partir d'un autre API qui est appelée avant que j'construire la requête. Je n'ai pas la possibilité de créer une table pour les mettre en.
que faites-vous avec les résultats de cette requête? Je veux dire, avez-vous utilisez les valeurs renvoyées dans une application, ou est-ce que ça va être utilisé dans les locaux de SQL - je veux dire en le rejoignant dans une requête, en l'utilisant dans une procédure stockée, etc?
Les résultats sont utilisés dans une jointure interne pour affiner un plus grand ensemble de données. Essentiellement, c'est la partie d'une liste de filtres être appliquée à une INTERFACE utilisateur de recherche.
OriginalL'auteur huntmaster | 2013-09-11
Vous devez vous connecter pour publier un commentaire.
ou
ou une sorte de requête hiérarchique que pourrait prendre votre séparées par des virgules-chaîne et de le diviser en une série de varchars.
De l'Union de ces à votre requête initiale.
mise à jour: "je ne suis pas traiter avec seulement 2 valeurs statiques, il est arbitraire de la liste."
Peut encore passer pour une requête comme une collection (ci-dessous est juste une des nombreuses approches possibles)
OriginalL'auteur be here now
Je pense que vous voulez diviser en deux sous-requêtes:
Noter que
union all
fonctionne mieux queunion
. Si vous savez il n'y a pas de doublons (ou les doublons n'ont pas d'importance) puis utiliserunion all
à la place.OriginalL'auteur Gordon Linoff
Si vous avez la possibilité/l'autorisation de créer un tableau de type, vous pouvez faire ceci:
Et puis vous pouvez utiliser la fonction de TABLE de sélectionner à partir d'une instance de ce type que vous initialisez à la volée dans votre SQL:
Résultat:
OriginalL'auteur adona9