두 개의 열 foreign_table_name
및 foreign_key
을 포함하는 테이블 이름이 table
입니다.postgres에서 동적 식별자가있는 테이블을 조인하는 방법은 무엇입니까?
이 테이블의 값 JOIN
과 foreign_table_name
에 지정된 이름의 테이블 인 SELECT
쿼리를 작성할 수 있습니까?
SELECT table.foo, table.bar, foreign_table.name
FROM table
JOIN $foreign_table AS foreign_table
ON (foreign_table.id = table.foreign_key
$foreign_table = table.foreign_table);
PlpgSQL을 사용하는 모든 솔루션을 허용 물론이다 : 우리는 모든 가능한 타겟팅 된 외국 테이블이 name
필드가 있음을 알고 있다면 내가 무언가를 쓸 수 있다면
는 예를 들어, 내가 알고 싶습니다.
Table ``table``
------------------------------------------------
| foo | bar | foreign_table_name | foreign_key |
------------------------------------------------
| A | 1 | fruits | 8 |
| B | 2 | vegetable | 5 |
------------------------------------------------
Table ``fruit``
---------------
| id | name |
---------------
| 8 | apple |
---------------
Table ``vegetable``
----------------
| id | name |
----------------
| 5 | carrot |
----------------
예상되는 결과 테이블은 다음과 같습니다 :
----------------------
| foo | bar | name |
----------------------
| A | 1 | apple |
| B | 2 | carrot |
----------------------
편집 :
는 여기에 간단한 내용의 나는 명확하게하기위한 시도로 전체 테이블의 예를 추가했습니다.
이렇게하려면 동적 SQL/준비된 명령문을 사용해야합니다. 기본 SQL 쿼리에서는 명시 적 테이블이 있어야합니다. –
PL/PgSQL에서'EXECUTE' 명령을보십시오. 또는 클라이언트에서 쿼리를 생성하십시오. –
@CraigRinger 이미''EXECUTE'' 문을 보았습니다. 그러나 이것으로도 해결책을 찾을 수 없었습니다. 그러니 마음에 든다면 공유하십시오. – vaab