SQL динамически соединяется с таблицей пользователя / данных - PullRequest
0 голосов
/ 13 декабря 2011

Я хочу что-то вроде:

SELECT * from metric_data m, 
    (SELECT table_for_join FROM join_tables WHERE from_table = 'usersupplied') u,
    WHERE m.id = u.id

Это возможно?

Я использую оракул 11g, если это имеет значение.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Я думаю, вам нужно использовать динамический 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;
0 голосов
/ 13 декабря 2011
SELECT m.* from metric_data m
LEFT JOIN join_tables u
ON(m.id = u.id AND u.from_table='usersuplied')
WHERE 1=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...