Select * from (select tablename from TOTO)

Fermé
kael999 Messages postés 13 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 15 mars 2011 - 15 mars 2011 à 13:27
fast_etudiant Messages postés 2 Date d'inscription lundi 7 mars 2011 Statut Membre Dernière intervention 15 mars 2011 - 15 mars 2011 à 13:51
Bonjour,



J'aimerais faire un select sur des tables qui sont elles mêmes remontées dans un select

j'essaye çà mais sans succès:

select * from (select tablename from TOTO)

les tables remontées par le select tablename from TOTO n'est pas pris pour un nom de table.
Pourriez-vous m 'aider ?

Merci

2 réponses

varfendell Messages postés 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
15 mars 2011 à 13:33
Bonjour,

essaye ceci:

SELECT * FROM TABLE(SELECT DISTINCT tablename FROM toto) AS titi

sinon essaye de faire une procédure du genre:

DECLARE @tableName VARCHAR(100)

-- Récupération nom de table
select @tableName = COALESCE(CASE WHEN RP.id_regle_produit is not null then 'ECommerce_CrossV2_Regle_Produit' end, CASE WHEN PH.id_regle_produit_hasard is not null then 'ECommerce_CrossV2_Produit_Hasard' end, case when AG.id_regle_achat_groupe is not null then 'ECommerce_CrossV2_Achat_Groupe' end) 
from ECommerce_CrossV2_Regle as R1 
LEFT JOIN ECommerce_CrossV2_Regle_Produit as RP ON R1.id_regle = RP.id_regle_produit LEFT JOIN ECommerce_CrossV2_Regle as R2 ON R1.id_regle = R2.id_regle
LEFT JOIN  ECommerce_CrossV2_Produit_Hasard as PH ON R2.id_regle = PH.id_regle_produit_hasard
LEFT JOIN ECommerce_CrossV2_Regle as R3 ON R1.id_regle = R3.id_regle
LEFT JOIN  ECommerce_CrossV2_Achat_Groupe as AG ON R3.id_regle = AG.id_regle_achat_groupe
WHERE R1.id_regle = 2;

-- Exécution 2ème select avec le nom de table en paramètre
EXEC('SELECT * FROM ' + @tableName)
1
fast_etudiant Messages postés 2 Date d'inscription lundi 7 mars 2011 Statut Membre Dernière intervention 15 mars 2011
15 mars 2011 à 13:51
bonjour,
vous pouvez utilisez une vue (table virtuelle) pour stocker le résultat de la requête précédente par exemple vous pouvez la nommer "COCO" et l'utiliser comme table dans ta requête : select * from COCO;

voici un lien pour savoir plus sur les vues :

https://www.commentcamarche.net/contents/1071-sql-creation-de-vues
0