Select * from (select tablename from TOTO)

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

  1. 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
    1. 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)