2013-01-17 114 views
0

我有以下表結構。需要從所有表中選擇那些最近由added_date添加的記錄。sql查詢從3個表中獲取結果

我想從table1, table2, table3中獲取titlename, sourcename, description, addde_date那些最近由added_date添加的那些。

標題名稱和源名稱存儲在標題和源表格中。

我已嘗試在這些表上合併,但Table3內容不同的列。

表1

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 

Ť書名表:

titleid  title_name 
     5   lgsfsgsf 
     6   lkklgyy 
     10   tyyiugj 
     15   lklklklkl 

來源表:

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

哪個SQL味是這樣的MSSQL,Oracle,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 

嗯,我剛剛意識到你沒有在你的Table3中的SourceId或TitleId。不會是能夠獲得這些信息,但你仍然可以這樣做:

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申請順序result.and我有多個時間的標題名稱,所以我可以適用不同的結果。 – Kango

+0

UNION應該只抓取DISTINCT值 - UNION ALL會返回非重疊值。就這樣說,我已經編輯了上面的回覆,以便使用帶有DISTINCT的子查詢(假設您的RDBMS支持這些)並添加了ORDER BY子句。祝你好運。 – sgeddes