2012-02-01 2 views
1

2 개의 테이블이 있습니다.동일한 정보 결합. 여러 테이블의 데이터를 하나의보기 열로 변환합니다.

TABLE_1 (id, date, column_1) 
TABLE_2 (id, date, column_1, column_2) 

ID와 날짜는 두 테이블에서 공통입니다. 이 두 가지를 결합하여 견해를 만들고 싶습니다.

VIEW_LATEST (index, table_name, id, date) 

보기에서 필자는 별도로 특정 행을 식별하는 색인이 필요합니다 (필 수 없음). 거기에 특정 행의 세부 정보 (ID, 날짜)를 가져온 사실을 식별하는 테이블 이름이 있습니다. 그리고 특정 기간의 정보 만 가져야합니다 (예 : 지난 주).

예 :

TABLE_1 ([ 1, 2012-01-27 ], [2, 2012-02-01 ]) 
TABLE_2 ([ 1, 2012-01-20 ], [ 2, 2012-01-31 ]) 
VIEW_LATEST ([ tbl_1, 2, 2012-02-01 ], [ tbl_2, 2, 2012-01-31 ], [ tbl_1, 1, 2012-01-27]) 

지난 주 - 2012-01-26에서 2012-02-01까지이므로 TABLE_2 첫 번째 레코드는보기에 반환되지 않습니다. 날짜순으로 정렬.

위에서 언급 한대로 정확하게 수행해야합니다. 나는 이와 같은 해결책을 찾지 못했다.

위의 시나리오를 달성하기위한 모든 해결책은 높이 평가됩니다. 또한 필요한 경우 최신 정보를 얻기 위해 TABLE_1, TABLE_2에 데이터를 삽입 할 때 데이터를 삽입하는 VIEW_LATEST 형식의 개별 테이블을 만들 것을 기대합니다. 위의 시나리오를 구현하는 것이 불가능한 경우 이는 하나의 솔루션이 될 것입니다.

답변

2

테이블을 함께 결합 할 수 있습니다.

MySQL을 들어

(더 하위 쿼리 허용) :

(SELECT 'Table_1' as tablename, id, date FROM Table_1 
WHERE date BETWEEN TO_DATE('20120126', 'YYYYMMDD') AND TO_DATE('20120201', 'YYYYMMDD')) 
UNION 
(SELECT 'Table_2' as tablename, id, date FROM Table_2 
WHERE date BETWEEN TO_DATE('20120126', 'YYYYMMDD') AND TO_DATE('20120201', 'YYYYMMDD')) 
ORDER BY tablename, id, date 

결과 집합은 다음과 같습니다

tablename id date 
--------- -- ----------- 
Table_1  1 2012-01-27 
Table_2  2 2012-01-31 
Table_1  2 2012-02-01 
+0

감사 적합 대단히 @ N 웨스트. SELECT를 시도했는데 정확히 언급 한대로했습니다. 나는 mysql을 사용하고있다. 그곳에는 특별히 'SELECT 문은 FROM 절에 하위 쿼리를 포함 할 수 없습니다. CREATE VIEW 문에서. 이 분야에서 내가 원시적 인 것처럼 누군가가 이것을 극복 할 수있는 해결책을 제안 할 수 있다면 매우 높이 평가됩니다. – chandimak

+1

MYSQL에서 하나의보기로 작동하도록 솔루션을 변경했습니다. –

1
SELECT src_table, id, the_date 
    FROM (SELECT 'TABLE_1' AS src_table, id, the_date 
      FROM table_1 
      WHERE the_date BETWEEN TO_DATE('2012-01-26', 'YYYY-MM-DD') 
          AND TO_DATE('2012-02-01', 'YYYY-MM-DD') 
     UNION 
     SELECT 'TABLE_2' AS src_table, id, the_date 
      FROM table_2 
      WHERE the_date BETWEEN TO_DATE('2012-01-26', 'YYYY-MM-DD') 
           AND TO_DATE('2012-02-01', 'YYYY-MM-DD') 
     ) 
    ORDER BY the_date DESC, id, src_table 

가 SYSDATE-7 또는 무엇 이건 날짜를 바꾸기는

+0

고맙습니다. 글렌. 이것은 별칭이 subquery 생성 된 테이블에 주어지면 mysql에서 잘 작동합니다. mysql을 사용하고 있습니다. 거기에 '보기의 SELECT에 FROM 절에 하위 쿼리가 있습니다.'오류가 발생합니다. mysql 문서에서는 특히 'SELECT 문은 FROM 절에 하위 쿼리를 포함 할 수 없습니다. '. 누군가가이 문제를 극복하기위한 해결책을 제안 할 수 있다면 매우 높이 평가됩니다. – chandimak

+1

@chandimak 나는 mysql에 너무 익숙하지 않지만, 내가 읽었던 것에서 해결 방법은 서브 쿼리를위한 별도의 뷰를 만드는 것이다. – Glenn

관련 문제