2013-08-07 44 views
0

我有兩個不同的表。一個是Article表,另一個是Gallery表。該圖庫包含多個圖像,所以還有另一個表名爲images(這裏沒有顯示)。 images表格中的圖像鏈接到圖庫表格,並帶有外鍵gallery_idSQL全外連接或聯合

現在我想要實現的是,在主頁上,我需要文章和畫廊的結合。如果顯示文章,則顯示文章的縮略圖,如果顯示該文章的縮略圖,則顯示該圖庫的最後一張圖像。

|Article | 
|-----------| 
|id   | 
|category_id| 
|title  | 
|slug  | 
|filename | 
|body  | 
|created | 
|modified | 

|Gallery| 
|-----------| 
|id   | 
|category_id| 
|title  | 
|slug  | 
|body  | 
|created | 
|modified | 

我使用的是非常複雜的UNION查詢來實現它。但我怎樣才能對結果進行排序。是否可以使用ORDER BY子句。用OUTER JOIN可以達到結果嗎?

+1

你想SELECT ... FROM( - 聯合查詢 - )X ORDER BY x.col - 如果我是你,我會做一個查看聯合查詢在其他地方容易使用,這將使查詢不那麼難看。 –

回答

1

outer join一樣的聲音在此不適用,因爲您希望將結果放在一列中。連接使數據成爲兩列,工會將數據製作成一列。

做一個排序,你可以做這樣的事情

Select id   
    , category_id 
    , title  
    , slug  
    , filename 
    , body  
    , created  
    , modified 
From ( 
    Select id   
     , category_id 
     , title  
     , slug  
     , filename 
     , body  
     , created  
     , modified 
    From Article 
    Union All Select id   
     , category_id 
     , title  
     , slug  
     , body  
     , created  
     , modified 
    From Gallery 
) AllCombined 
Order by AllCombined.title