2017-12-15 7 views
-3

테이블 1, 테이블 2, 테이블 3, 테이블 4 및 테이블 5의 5 개의 테이블이 있습니다. 다섯 개 모두 다른 테이블입니다. 모든 테이블에는 자동 증가 ID가 있습니다. 'thor_id', 'iron_id', 'wonder_id', 'hulk_id'및 'spider_id'와 같은 다른 이름을 가진 모든 테이블에 하나의 열이 있습니다 (자동 증가 ID가 아님). 4 개의 테이블 모두에 날짜 (유일한 날짜) 열이 있습니다. 한 테이블은 datetime (2017-09-06 09:09:09 - 중복되지 않음)이며 duplicate * id (필수 항목 임)가 있습니다.Mysql : 날짜 또는 날짜를 기준으로 하나의 열만 일치하는 5 개의 다른 테이블 중에서 선택하십시오.

* id와 특정 날짜 또는 2 개의 날짜 사이를 기준으로 5 개의 테이블 모두에서 데이터를 검색하려고합니다. 그래서 결과 집합 한 날짜 같은 시도

|date  | t1.id | t1.date | t1.amt | t2.id |t2.date |t2.amt |t3.id | t3.date | t3.amt | t4.id | t4.date | t4.amt |t5.id | t5.date |t5.amt | 
|-----------|-------|-----------|--------|-------|-----------|-------|------|----------|--------|-------|----------|--------|------|----------|-------| 
|2017-09-06 | 2341 |2017-09-06 | 10000 | null | null  |null |2341 |2017-09-06| 100000 | null | null | null | 2341 |2017-09-06|200000 | 
|2017-09-07 | 2341 |2017-09-07 | 90000 | null | null  |null |2341 |2017-09-07| 300000 | 2341 |2017-09-07| 1000 | 2341 |2017-09-07|500000 | 
|2017-09-09 | null |null  | null | 2341 | 2017-09-09|200000 |2341 |2017-09-07| 300000 | null | null | null | 2341 |2017-09-07|500000 | 

1.I가 날짜

select t1_date,t1_id,t1_amt,t2_date,t2_id,t_amt from t1 inner join t2 where date(t2_date)='2017-09-06' and t2_id='9106' and t1_date='2017-09-06' and t1_id='9106'; 

2. 나는 두 개의 테이블과 시도

|date  | t1.id | t1.date | t1.amt | t2.id |t2.date |t2.amt |t3.id | t3.date | t3.amt | t4.id | t4.date | t4.amt |t5.id | t5.date |t5.amt | 
|----------|-------|-----------|--------|-------|--------|-------|------|----------|--------|-------|---------|--------|------|----------|-------| 
|2017-09-06| 2341 |2017-09-06 | 10000 | null | null |null |2341 |2017-09-06| 100000 | null | null | null | 2341 |2017-09-06|200000 | 

둘 사이의 날짜 수 있어야 같은 두 테이블을 사용하여 두 날짜간에 데이터를 검색합니다.

select t1_date,t1_id,t1_load_amt,t2_date,t2_id,t_total from t1 inner join t2 where date(t2_date) between '2017-09-06' and '2017-09-30' and t2_id='9106' and t1_date between '2017-09-06' and '2017-09-30' and t1_id='9106'; 

No.1은 예상되는 결과를 제공하지만 다른 세 개의 테이블을 추가하면 결과 세트가 비어 있습니다. N0.2 Null 대신 레코드가있는 중복 행이 생성됩니다. SQL에 익숙하지 않아서 도움이 될 것입니다. 미리 감사드립니다.

+1

설명이 명확하지 않습니다. [mcve]를 읽고 행동하십시오. DDL 등을 보여주십시오. 물건을 명확하게 지칭하고 의미를 말하기에 충분한 문장과 단어를 사용하십시오. – philipxy

답변

0

편집 : 내 잘못, 신분증 부분을 놓친 것 같습니다.

그렇다면 초기 솔루션이 훨씬 더 좋은 대답이 아닐까요?

SELECT 't1' AS in_table, t1.id AS id, t1.datetime, t1.amt 
FROM tb1 t1 WHERE t1.id = 2341 AND t1.datetime BETWEEN '2017-09-06' AND '2017-09-09' 
UNION ALL 
SELECT 't2' AS in_table, t2.id AS id, t2.datetime, t2.amt 
FROM tb2 t2 WHERE t2.id = 2341 AND t2.datetime BETWEEN '2017-09-06' AND '2017-09-09' 
UNION ALL 
SELECT 't3' AS in_table, t3.id AS id, t3.datetime, t3.amt 
FROM tb3 t3 WHERE t3.id = 2341 AND t3.datetime BETWEEN '2017-09-06' AND '2017-09-09' 
UNION ALL 
SELECT 't4' AS in_table, t4.id AS id, t4.datetime, t4.amt 
FROM tb4 t4 WHERE t4.id = 2341 AND t4.datetime BETWEEN '2017-09-06' AND '2017-09-09' 
UNION ALL 
SELECT 't5' AS in_table, t5.id AS id, t5.datetime, t5.amt 
FROM tb5 t5 WHERE t5.id = 2341 AND t5.datetime BETWEEN '2017-09-06' AND '2017-09-09' 

----------------------- 아래의 이전 편집 ---------------- -------

EDIT : JUST 경고하는 바이다 이것은 추한 혼란 매우 UGLY HACK 모든

먼저 샘플 결과이다 기본적 http://rextester.com/NFP12823

, 나는 FULL OUTER JOIN의 힘을 빌어서 이렇게 만들었습니다.

SELECT COALESCE(t1.datetime, tbl.datetime_index) AS datetime_index, t1.id as t1_id, t1.datetime as t1_datetime, t1.amt as t1_amt, tbl.t2_id as t2_id, tbl.t2_datetime as t2_datetime, tbl.t2_amt as t2_amt, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
FROM tb1 t1 
FULL OUTER JOIN (
    SELECT COALESCE(t2.datetime, tbl.datetime_index) AS datetime_index, t2.id as t2_id, t2.datetime as t2_datetime, t2.amt as t2_amt, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
    FROM tb2 t2 
    FULL OUTER JOIN (
     SELECT COALESCE(t3.datetime, tbl.datetime_index) AS datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
     FROM tb3 t3 
     FULL OUTER JOIN (
      SELECT COALESCE(t4.datetime, t5.datetime) AS datetime_index, t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
      FROM tb4 t4 
      FULL OUTER JOIN tb5 t5 
      ON t4.datetime = t5.datetime 
     ) tbl 
     ON t3.datetime = tbl.datetime_index 
    ) tbl 
    ON t2.datetime = tbl.datetime_index 
)tbl 
ON t1.datetime = tbl.datetime_index 

그래서 중앙에서 시작하여, 나는 T4와 T5에 가입하고, 기본 목표는 시간에 자료를 검색하려면, 그래서 이후로는 일반 인덱스 datetime_index를 만들었습니다. join에 대해 일치하는 날짜 또는 null (일치하지 않는 경우)을 반환하므로 coalesce를 사용하면 첫 번째 null이 아닌 값을 반환하므로 t4의 날짜 또는 t5의 날짜가됩니다. 이 과정을 세 번 더 반복하면, 각각 이전에 생성 된 테이블 인 voila의 맨 위에 원하는 최종 테이블이 생깁니다.

참고 : FULL OUTER JOIN은 MySQL에서 지원되지 않으므로이를 해결하기 위해 또 다른 해킹이 필요하거나 다른 SQL 서버 (PostgreSQL 사용)를 사용해야 할 수도 있습니다.

EDIT2가 : -이, 롤 못생긴 엉망 말했다 이유는 http://rextester.com/FKMS97691

SELECT COALESCE(tbl.t1_datetime, tbl.datetime_index) AS datetime_index, tbl.t1_id as t1_id, tbl.t1_datetime as t1_datetime, tbl.t1_amt as t1_amt,tbl.t2_id as t2_id, tbl.t2_datetime as t2_datetime, tbl.t2_amt as t2_amt, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
FROM (SELECT tmptbl.datetime_index, t1.id as t1_id, t1.datetime as t1_datetime, t1.amt as t1_amt,tmptbl.t2_id as t2_id, tmptbl.t2_datetime as t2_datetime, tmptbl.t2_amt as t2_amt, tmptbl.t3_id as t3_id, tmptbl.t3_datetime as t3_datetime, tmptbl.t3_amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
     FROM tb1 t1 LEFT JOIN (
      SELECT COALESCE(tbl.t2_datetime, tbl.datetime_index) AS datetime_index, tbl.t2_id as t2_id, tbl.t2_datetime as t2_datetime, tbl.t2_amt as t2_amt, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
      FROM (SELECT tmptbl.datetime_index, t2.id as t2_id, t2.datetime as t2_datetime, t2.amt as t2_amt,tmptbl.t3_id as t3_id, tmptbl.t3_datetime as t3_datetime, tmptbl.t3_amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
        FROM tb2 t2 LEFT JOIN (
         SELECT COALESCE(tbl.t3_datetime, tbl.datetime_index) AS datetime_index, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
         FROM (SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 LEFT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index 
           UNION 
           SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 RIGHT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index) tbl 
        ) tmptbl ON t2.datetime = tmptbl.datetime_index 
        UNION 
        SELECT tmptbl.datetime_index, t2.id as t2_id, t2.datetime as t2_datetime, t2.amt as t2_amt, tmptbl.t3_id as t3_id, tmptbl.t3_datetime as t3_datetime, tmptbl.t3_amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
        FROM tb2 t2 RIGHT JOIN (
         SELECT COALESCE(tbl.t3_datetime, tbl.datetime_index) AS datetime_index, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
         FROM (SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 LEFT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index 
           UNION 
           SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 RIGHT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index) tbl 
        ) tmptbl ON t2.datetime = tmptbl.datetime_index) tbl 
     ) tmptbl ON t1.datetime = tmptbl.datetime_index 
     UNION 
     SELECT tmptbl.datetime_index, t1.id as t1_id, t1.datetime as t1_datetime, t1.amt as t1_amt, tmptbl.t2_id as t2_id, tmptbl.t2_datetime as t2_datetime, tmptbl.t2_amt as t2_amt, tmptbl.t3_id as t3_id, tmptbl.t3_datetime as t3_datetime, tmptbl.t3_amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
     FROM tb1 t1 RIGHT JOIN (
      SELECT COALESCE(tbl.t2_datetime, tbl.datetime_index) AS datetime_index, tbl.t2_id as t2_id, tbl.t2_datetime as t2_datetime, tbl.t2_amt as t2_amt, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
      FROM (SELECT tmptbl.datetime_index, t2.id as t2_id, t2.datetime as t2_datetime, t2.amt as t2_amt,tmptbl.t3_id as t3_id, tmptbl.t3_datetime as t3_datetime, tmptbl.t3_amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
        FROM tb2 t2 LEFT JOIN (
         SELECT COALESCE(tbl.t3_datetime, tbl.datetime_index) AS datetime_index, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
         FROM (SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 LEFT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index 
           UNION 
           SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 RIGHT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index) tbl 
        ) tmptbl ON t2.datetime = tmptbl.datetime_index 
        UNION 
        SELECT tmptbl.datetime_index, t2.id as t2_id, t2.datetime as t2_datetime, t2.amt as t2_amt, tmptbl.t3_id as t3_id, tmptbl.t3_datetime as t3_datetime, tmptbl.t3_amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
        FROM tb2 t2 RIGHT JOIN (
         SELECT COALESCE(tbl.t3_datetime, tbl.datetime_index) AS datetime_index, tbl.t3_id as t3_id, tbl.t3_datetime as t3_datetime, tbl.t3_amt as t3_amt, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
         FROM (SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 LEFT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index 
           UNION 
           SELECT tmptbl.datetime_index, t3.id as t3_id, t3.datetime as t3_datetime, t3.amt as t3_amt, tmptbl.t4_id as t4_id, tmptbl.t4_datetime as t4_datetime, tmptbl.t4_amt as t4_amt, tmptbl.t5_id as t5_id, tmptbl.t5_datetime as t5_datetime, tmptbl.t5_amt as t5_amt 
           FROM tb3 t3 RIGHT JOIN (
            SELECT COALESCE(tbl.t4_datetime, tbl.t5_datetime) AS datetime_index, tbl.t4_id as t4_id, tbl.t4_datetime as t4_datetime, tbl.t4_amt as t4_amt, tbl.t5_id as t5_id, tbl.t5_datetime as t5_datetime, tbl.t5_amt as t5_amt 
            FROM (SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 LEFT JOIN tb5 t5 ON t4.datetime = t5.datetime 
              UNION 
              SELECT t4.id as t4_id, t4.datetime as t4_datetime, t4.amt as t4_amt, t5.id as t5_id, t5.datetime as t5_datetime, t5.amt as t5_amt 
              FROM tb4 t4 RIGHT JOIN tb5 t5 ON t4.datetime = t5.datetime) tbl 
           ) tmptbl ON t3.datetime = tmptbl.datetime_index) tbl 
        ) tmptbl ON t2.datetime = tmptbl.datetime_index) tbl 
     ) tmptbl ON t1.datetime = tmptbl.datetime_index) tbl 

다음은 MySQL의 등가 버전을을합니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 내가 물었던 것을 성취 할 수는없는 것일까 요? 아무도? – user2358665

+0

는 사실, 난 또 하나 개의 방법이 생각 날 –

+0

을 고칠 수 있도록 나는 아래, 는 "t1_date, t1_id, t1_amt, t2_date, t2_id, t2_amt, t3_date, t3_id, t3_amt, t4_date, t4_id을 선택 쿼리에 가입 왼쪽 시도 t4_amt, t5_date, t5_id, 좌 t1_id = t2_id AND t2_date = 일 (t1_date)의 T2 가입 T1 FROM t5_amt LEFT ON T3 가입 t1_id = t3_id AND t3_date = 일 (t1_date) 왼쪽 t1_id = t4_id AND t4_date ON T4 가입 = date (t1_date) LEFT JOIN t5 ON t1_id = t5_id 및 날짜 (t5_date) = 날짜 (t1_ 날짜) '2017-09-06'과 '2017-09-30'사이의 날짜 (t1_ 날짜) 및 t1_id = 4490 'ORDER BY t1_id; " – user2358665