2013-08-22 4 views
-1

Est-il possible d'écrire une requête comme ci-dessous? Le « column4 » dans la requête interne est un nom de table, et je veux l'utiliser dans la requête externerequête pour sélectionner à partir d'une table qui est une valeur d'une autre table

select x.column1, x.column2, x.column3, d.column5 
    from (select 
     a.column1, a.column2, a.column3, b.column4 
    from 
     table1 a inner join table2 b on a.priKeyCol = b.prikeyCol 
    )x 
    inner join column4 d on x.column2 = d.priColKey 
+0

Semble à moi comme vous devez regarder en utilisant SQL dynamique. – Taryn

Répondre

0

Ce que vous pouvez faire est de créer une vue qui se trouve sur toutes les tables que vous pourriez joindre.

create view UnifiedTables 
as 
select *,'Table1' as TableName from table1 
union all 
select *,'Table2' as TableName from table2 
union all 
select *,'Table3' as TableName from table3 

Puis vous pouvez rejoindre ce UnifiedTables dans votre requête principale.

select t1.c1 t1c1, t1.c2 t1c2, t1.c3 t1c3, 
     ut.c1 utc1, ut.c2 utc2, ut.c3 utc3 
from table1 t1 
join UnifiedTables ut on t1.c4 = ut.TableName 

Mais c'est un hack qui ne résoudra probablement pas votre problème à plus grande échelle.

+0

Ce n'est pas ce que je cherche. Je cherche un moyen de sélectionner à partir d'une table et le nom de la table est une valeur d'une autre table. – fn79

+0

@ fn79 Je sais. Que pensez-vous que je fournis? –

Questions connexes