2013-08-07 45 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