Я не уверен, что это возможно с SQL (скажем, мы выполняем на DB2) - на самом деле, я бы сказал, что это не так, но подумал, что я бы хотел спросить некоторых людей, которые более опытны в SQL, чем я. Я описал проблему и то, что я хотел бы случиться ниже. Пожалуйста, дайте мне знать, если вы видите способ сделать это, если нет, я думаю, я иду по пути извлечения данных в пакетном режиме или что-то подобное. Большое спасибо.
MAIN TABLE
| REF_TABLE | RECORD_NO | GROUPID |
| TABLE1 | 1 | BLUE |
| TABLE1 | 2 | BLUE |
| TABLE2 | 3 | GREEN |
| TABLE3 | 4 | BLUE |
| TABLE2 | 5 | GREEN |
| TABLE4 | 6 | BLUE |
TABLE1
| RECORD_NO | NAME | VALUE |
| 1 | NAMEX | RANDOM1 |
| 2 | NAMEY | RANDOM2 |
TABLE2
| RECORD_NO | NAME | VALUE |
| 3 | NAMEB | RANDOM10 |
| 5 | NAMEC | RANDOM9 |
TABLE3
| RECORD_NO | NAME | VALUE |
| 4 | NAMET | RANDOM77 |
TABLE4
| RECORD_NO | NAME | VALUE |
| 6 | NAMET | RANDOM77 |
| 7 | NAMEZ | RANDOM99 |
Итак, у меня есть несколько критериев для запроса ОСНОВНОЙ ТАБЛИЦЫ, например
SELECT REF_TABLE, RECORD_NUMBER WHERE GROUPID = 'BLUE'
Но я также хочу включить соответствующие значения из других таблиц, на которые ссылаются через REF_TABLE. Таким образом, результат будет:
| REF_TABLE | RECORD_NUMBER | NAME | VALUE |
| TABLE1 | 1 | NAMEX | RANDOM1 |
| TABLE1 | 2 | NAMEY | RANDOM2 |
| TABLE3 | 4 | NAMET | RANDOM77 |
| TABLE4 | 6 | NAMET | RANDOM77 |
В этом случае столбцы TABLE1, TABLE3 и TABLE4 объединяют свои имена и значения в один набор результатов. Таблица, конечно, извлекается из столбца ref_table главной таблицы. Список таблиц ссылок конечный, поэтому я могу жестко закодировать имена таблиц в инструкциях SQL в запросе (чтобы избежать динамической установки имени таблицы), например. IF TABLE1 SELECT FROM SCHEMA.TABLE1 (maybe CASE).
Реструктуризация таблиц невозможна, и число возвращаемых результатов может составлять 10000.
Желательно, чтобы все это было одним запросом.
Спасибо.