54 votes

Comment sélectionner à partir de MySQL où le nom de la table est variable

J'ai un cas où l'obtention du nom de la table devrait provenir d'une variable définie comme :

 SET @ID_1 = (SELECT ID FROM `slider` LIMIT 0,1);
SET @Cat = (SELECT Category FROM `slider` LIMIT 0,1);
select * from @Cat where ID = @ID_1

mais de cette façon, MySQL génère une erreur, alors quelqu'un pourrait-il me montrer comment je peux y parvenir, car ce sont mes petits pas dans MySQL.

84voto

Joe Stefanelli Points 72874

Vous devrez le faire avec une déclaration préparée . Quelque chose comme:

 SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1); 

PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 

-4voto

Palak Mantry Points 29

J'ai eu cette solution après des heures de débogage

L'image que j'ai jointe fonctionne à 100% pour mysql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X