SQL Dynamique instruction SELECT à partir de valeurs stockées dans une table
J'ai été à la recherche de ce pour un couple de jours et se sentir comme je suis de tourner en rond. J'ai des connaissances de base SQL, mais il ya de nombreux domaines que je ne comprends pas.
J'ai une table qui stocke les noms et les champs de toutes les autres tables dans ma base de données.
tblFields
===================================================
TableName FieldName BookmarkName
---------------------------------------------------
Customer FirstName CustomerFirstName
Customer LastName CustomerLastName
Customer DOB CustomerDOB
Je veux écrire un SELECT
énoncé comme le suivant, mais je suis incapable de le faire fonctionner:
SELECT (SELECT [FieldName] FROM [TableName]) FROM tblFields
Est-ce possible? L'application que j'ai développé l'exige à la personnalisation par l'utilisateur de rapports.
Je ne comprends pas ce que vous voulez faire.
Vous pouvez utiliser une chaîne de constructeur pour créer cette requête - mais peut-être qu'il faudrait utiliser une autre langue (par exemple, C#) pour construire la requête, puis de l'exécuter à l'encontre de la DB.
Vous devez état SGBDR (et version).
Vous pouvez utiliser une chaîne de constructeur pour créer cette requête - mais peut-être qu'il faudrait utiliser une autre langue (par exemple, C#) pour construire la requête, puis de l'exécuter à l'encontre de la DB.
Vous devez état SGBDR (et version).
OriginalL'auteur Matthew Dally | 2011-03-06
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien ce que vous essayez de le faire, vous êtes probablement mieux de faire ce que les deux requêtes distinctes à partir de votre programme. Celui qui obtient les champs que vous souhaitez sélectionner l'option que vous utiliser dans votre programme pour mettre en place la deuxième requête qui obtient réellement les données.
Si cela doit être fait entièrement en SQL, alors vous devez nous dire ce que la base de données que vous utilisez. Si c'est SQL Server, vous pourriez être en mesure à l'utilisateur un curseur sur la première requête pour construire la deuxième requête qui vous, puis d'exécuter la procédure stockée sp_executesql. Mais le faire le faire en dehors de SQL serait recommandé.
J'ai un signets table qui affiche la liste des champs dans la base de données et le nom du signet. J'ai un deuxième tableau qui répertorie tous les signets trouvé dans un document Word que je veux remplacer par les valeurs de base de données. Je suis l'aide d'une procédure stockée qui génère du code XML à partir des deux tableaux contenant les noms de signet et les valeurs que j'utilise ensuite pour mettre à jour le document Word.
OriginalL'auteur Michael McMullen
Si je comprends ce que vous essayez de faire, je pense que cela va vous aider. Il n'est pas assez, et il fonctionne pour SQL Server 2005 et au-dessus, mais c'est peut-être ce que vous cherchez:
Edit: Comme Martin a suggéré, j'ai édité pour que les colonnes et le nom de la table sont à l'aide de QUOTENAME
QUOTENAME
pour la colonne et les noms de table.Salut Radu, je vous remercie pour votre réponse. Comme Michael, votre réponse était, fondamentalement, ce que je suis venu avec. J'ai marqué Michael correctes, il a répondu en premier. 🙂
OriginalL'auteur Radu Caprescu