Nous avons 2 tables avec une structure identique et basée sur une variable, je souhaite choisir la table à sélectionner sans avoir à écrire 2 requêtes dans ma procédure.
est-ce possible? P>
i essayé p> mais cela n'a pas fonctionné p> p>
3 Réponses :
Vous auriez besoin d'utiliser SQL dynamique pour cela (en supposant que vous souhaitiez l'amplifier à plus de 2 tables), ce qui fonctionnerait, mais est sous-optimal car SQL ne générera pas de statistiques pour elle et d'optimiser la requête. ou, dans une procédure stockée: p>
J'essayais d'éviter d'écrire un SP pour une exécution d'une fois, ce qui semble être la solution que je consiste à faire parce que le résultat final est plus compliqué que l'échantillon facile que j'ai mis en place.
Une option est d'utiliser Dynamic SQL, mais si la performance n'est pas un problème immédiat, beaucoup plus simple est de simplement union code> les tableaux et ajoutez un mannequin [table] code> colonne Pour choisir parmi. SELECT orderID, Quantity
FROM (
SELECT [table] = 1, orderID, Quantity
FROM tblOrders
UNION ALL
SELECT [table] = 2, orderID, Quantity
FROM tblSubscriptionOrders
) t
WHERE t.Table = @table
Si ce n'est que deux tables, vous pouvez faire:
Declare @table = 1 SELECT * FROM Table1 WHERE <stuff> AND @Table = 1 UNION ALL SELECT * FROM Table2 WHERE <stuff> AND @Table = 2
+1 Non testé mais je suppose que ce serait la solution la plus rapide encore présentée.