我想要类似的东西:
SELECT * from metric_data m,
(SELECT table_for_join FROM join_tables WHERE from_table = 'usersupplied') u,
WHERE m.id = u.id
这可能吗?
如果重要,我正在使用oracle 11g。
答案 0 :(得分:2)
我认为你需要使用动态sql。这样的事情(抱歉,我现在无法测试它,但我希望它能够正常工作
CREATE PROCEDURE getMetricData (in_table_name varchar2)
IS
real_tab_name varchar(32);
BEGIN
SELECT table_for_join into real_tab_name
FROM join_tables WHERE from_table = in_table_name;
IF (real_tab_name IS NOT NULL) THEN
EXECUTE IMMEDIATE 'SELECT * from metric_data m, ' || real_tab_name || ' u
WHERE m.id = u.id';
END IF;
END;
答案 1 :(得分:0)
SELECT m.* from metric_data m LEFT JOIN join_tables u ON(m.id = u.id AND u.from_table='usersuplied') WHERE 1=1