7
votes

Nom de la table dynamique de requête SQL dans pour

J'ai une table tbl1 qui a une colonne tbl_names . Cette colonne contient le nom de certaines autres tables.
Maintenant, je veux écrire une requête dans le format suivant:

Sélectionnez * à partir de (Sélectionnez Tbl_Names à partir de TBL1)

Je sais que la requête ci-dessus ne fonctionnera pas mais comment je peux y parvenir? Dois-je écrire une procédure stockée ou quelque chose comme ça et boucle sur chaque valeur de la deuxième requête et exécuter la première requête?

merci


2 commentaires

La procédure stockée peut vous aider


Merci Arun pour une réponse rapide. Mais désolé de dire que je ne connaissais pas du tout des procédures stockées, alors pouvez-vous m'aider avec ceci :)


3 Réponses :


7
votes

Vous pouvez utiliser des instructions préparées xxx

Préparez la syntaxe

acclamations.


0 commentaires

-1
votes

Il suffit d'ajouter un pseudonim à la sous-requête: xxx

bonne chance)


1 commentaires

Cela ne semble pas travailler à Mariadb, avez-vous vérifié que cela fonctionne dans MySQL? Cela ne semble pas que ce soit.



0
votes

Vous devrez utiliser un SQL dynamique. Construisez une chaîne SQL avec la requête que vous souhaitez exécuter, puis appelez exécuté (@sql) code>

Exemple complet: p>

declare cur cursor for
select tbl_names from tbl1

declare @sql varchar(100), @tbl varchar(100)

open cur

fetch cur into @tbl

while @@FETCH_STATUS = 0 begin
    set @sql = 'select * from ' + @tbl
    exec(@sql)
    fetch cur into @tbl
end

close cur
deallocate cur


0 commentaires