J'ai une liste des codes de pays ISO2 que je veux utiliser dans une requête. mais .. Travailler. P> Je me souviens de faire une telle chose dans le passé, mais je ne trouve plus de doc.
C'est une requête one shot, donc je ne me dérange pas la performance, la pratique de codage ou la maintenabilité. P> Des idées? P> Mise à jour forte> Pour tester mes requêtes, j'ai besoin de valeurs de tir rapides dans une table sur cette nouvelle base de données. Je ne veux pas configurer les réseaux, les requêtes multi-serveurs, etc. pour tester mes requêtes sur certaines données réelles. J'espère que cela explique pourquoi je vais contre le ruisseau pour celui-ci. P> p>
Quelque chose comme ça:
Comme l'a noté Pax, il est en effet meilleure pratique de disposer de ces données dans ma base de données pour toutes les bonnes raisons. Je comprends son opinion parce que je répondrais la même chose. Cependant, ces données sont déjà dans une autre table, dans une autre base de données, sur un autre serveur, sur un autre réseau. P>
4 Réponses :
Le meilleur em> moyen de le faire (malgré votre désir de les avoir codé dur) est de créer une table de codes de pays: p> Je suis de la ferme conviction que les données doivent être stockées dans des tables dans lesquelles il peut être facilement modifié, non pas incorporé dans le code source ou les scripts où il s'agit d'un cauchemar pour suivre et Modifier. P> C'est mon avis, d'autres peuvent être en désaccord. P> P>
+1. Même si les autres réponses vous donnent une solution à ce que vous demandez, vous devez vous arrêter et penser à ce qu'il va coûter pour le maintenir.
Le problème est que les données figurent dans une autre base de données et doivent être placées dans ce tableau sur un autre serveur. Il serait beaucoup plus de travail de configurer les requêtes de réseau, de connexion, de droits et de serveurs croisés, puis sélectionnez-les et insérez-les dans cette liste.
J'ai ajouté des informations au PO avec cet égard
Ceci (ou plutôt une table temporaire), est la bonne façon de le faire.
première méthode à l'aide de Union: la seconde - pas évidente, mais élégante - utilisant des requêtes récursives; p> vous place à @x String, en supposant que le code a lieu 2. Une petite restriction de cette méthode est un niveau récursif (pour 2005, il est 100) p> p>
Vous pouvez supprimer la limite de récursion par défaut en ajoutant une option (maxrecursion 0) à la fin de votre requête.
Nous semblons avoir des définitions différentes du mot "élégant" :-)
@Pax - Cet échantillon est extrait du code réel. Nous venons de créer une fonction de la valeur de table - qui accepte la chaîne de Varcharner (donc au lieu de l'argument d'entrée utilisé par @x). Et cela fonctionne dans plusieurs cas d'utilisation.
@Dewfy, ne vous inquiétez pas, je me suis vraiment marvel que l'ingéniosité, mais également la performance, la compréhensibilité et la maintenabilité. Juste mon raisonnement très subjectif du cours.
Oui, je ne voulais pas offenser. La définition que j'ai la plupart associée à l'élégant est "inhabituellement efficace et simple". Votre solution est efficace mais difficilement simple. Néanmoins, c'est est i> intelligent et que lui-même peut parfois être une bonne chose.
@Pax, c'est bon, c'est pourquoi j'ai fourni la première façon.
La réponse de PAX est une approche correcte. Mais si vous insistez pour le faire en ligne:
select cou, 128,13, 1
from (select 'AD' as cou
union all select 'AE'
union all select 'AF'
union all select 'AG'
union all select 'AI'
union all select 'AL'
union all select 'AM') as X
Valeurs Le mot clé peut être utilisé pour y parvenir.
select col1, 128 col2, 13 col3, 1 col4
from ( values ('AD'), ('AE'), ('AF'), ('AG'), ('AI'), ('AL'), ('AM')) as x (col1)
Cela devrait être marqué comme la bonne réponse, quelle que soit votre compréhension de l'élégance. Pour rejoindre, Sélectionnez * à partir d'une jointure interne réelle (valeurs (une valeur d'une seule »), (« autre_val »)) sous X (col) sur realcol = col code>. Pour rejoindre la création d'un cartésien, SELECT * à partir d'une jointure interne réelle (valeurs («valeur»), («autre_val»)) sous x (col) sur 1 = 1 code>
J'aime comment, malgré mon désistement, les gens suggèrent toujours que je devrais le mettre dans une table. Ne me trompe pas. Je voudrais faire la même chose :)