2013-01-17 2 views
0

나는 다음 테이블 구조를 가지고 있습니다. 최근에 added_date에 의해 추가 된 모든 테이블에서 레코드를 선택해야합니다.3 테이블에서 결과를 얻기위한 SQL 쿼리

table1, table2, table3에서 가져 오려고하는데, 최근에 추가 된 내용은 added_date입니다.

제목 및 소스 이름은 제목 및 소스 테이블에 저장됩니다.

이 테이블에서 유니온을 시도했지만 다른 열에는 Table3 내용이 포함됩니다.

id titleid sourceid  text_content  added_date ------- 
    1  15   20   XYzgff  10-10-2012:5:30pm 
    2  10   5   gghghggg  10-11-2012:5:30pm 

표 2

id titleid sourceid description  added_date ------- 
    1  6   8   fhjjjjjkk  11-04-2012:5:30pm 
    2  10   5   gghghggg  10-11-2012:5:30pm 

표 3

id  url   Title  Description  added_date  ------------- 
    1  ggggg  fhhh  llllll   31-04-2012:5:30pm 
    2  kkkkkk  ttttt  kkkkkk   10-11-2012:5:30pm 

T '타이틀 테이블 :

titleid  title_name 
     5   lgsfsgsf 
     6   lkklgyy 
     10   tyyiugj 
     15   lklklklkl 

소스 테이블 :

sourceid  source_name 
     5   jlkjljlj 
     8   ghhhhhhh 
     20   hhhhhhhf 
     6   llllllll 
+0

이 MSSQL, 오라클, MySQL은 (또한 버전) –

답변

0

당신은 UNION를 사용해야합니다. 이 (안된) 시도 :

SELECT t.title_name, s.source_name, t1.text_content, t1.added_date 
FROM Table1 t1 
JOIN Title T 
    ON t1.TitleId = T.TitleId 
JOIN Source S 
    ON t1.SourceId = S.SourceId 
UNION 
SELECT t.title_name, s.source_name, t2.description, t2.added_date 
FROM Table2 t2 
JOIN Title T 
    ON t2.TitleId = T.TitleId 
JOIN Source S 
    ON t2.SourceId = S.SourceId 
UNION 
SELECT t.title_name, s.source_name, t3.description, t3.added_date 
FROM Table3 t3 
JOIN Title T 
    ON t3.TitleId = T.TitleId 
JOIN Source S 
    ON t3.SourceId = S.SourceId 

그럼 난 그냥 당신이 당신의 표 3에서 SourceId 또는 TitleId이없는 깨달았다. 정보를 얻을 수있을 것,하지만 당신은 여전히 ​​할 수 없음 :

SQL 맛이
SELECT DISTINCT Title_Name, Source_Name, Text_Content, Added_Date 
FROM 
(
    SELECT t.title_name, s.source_name, t1.text_content, t1.added_date 
    FROM Table1 t1 
    JOIN Title T 
    ON t1.TitleId = T.TitleId 
    JOIN Source S 
    ON t1.SourceId = S.SourceId 
    UNION 
    SELECT t.title_name, s.source_name, t2.description, t2.added_date 
    FROM Table2 t2 
    JOIN Title T 
    ON t2.TitleId = T.TitleId 
    JOIN Source S 
    ON t2.SourceId = S.SourceId 
    UNION 
    SELECT t3.title, 'Unknown', t3.description, t3.added_date 
    FROM Table3 t3 
) t 
ORDER BY added_date 
+0

: 어떻게에 ADDED_DATE에 의해 순서를 적용 할 수 있습니다 결과 및 뚜렷한 결과를 적용 할 수 있도록 여러 번 제목 이름이 있습니다. – Kango

+0

UNION은 DISTINCT 값만 가져야합니다. - UNION ALL은 고유하지 않은 값을 반환합니다. 그 말로, 나는 DISTINCT (당신의 RDBMS가 그것들을 지원한다고 가정 함)과 함께 서브 쿼리를 사용하기 위해 위의 나의 응답을 편집하고 ORDER BY 절도 추가했다. 행운을 빕니다. – sgeddes

관련 문제