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,

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