2013-08-31 61 views
0

我有2個表庫(Gallery_ID,名稱)和Gallery_Image(ID,Gallery_ID,圖像)。我的問題是我要選擇的每個庫找到只有一個表在外國表與另一個表

我已經嘗試此查詢

SELECT distinct top 1 Gallery.Gallery_ID, Gallery.Gallery_Name,Gallery.Gallery_Name as Gallery_Image 
FROM   Gallery 
    union 
select distinct Gallery_Image.Gallery_ID,Gallery_Image.Gallery_Images as Gallery_Name,Gallery_Image.Gallery_Images 
from Gallery_Image inner join Gallery on Gallery.Gallery_ID=Gallery_Image.Gallery_ID 
where Gallery_Image.Gallery_ID in(select Gallery_ID from Gallery) 

回答

1

你說的只是一個形象:「我要選擇的每個庫的只有一個形象」這是有道理的。我不知道你的查詢如何與這個問題相關。

您不指定您正在使用的數據庫。一個好方法是使用row_number()爲圖庫中的圖像分配連續順序。關鍵是要做一個隨機排序。最後一塊取決於數據庫。下面是SQL Server語法:

select gi.* 
from (select gi.*, row_number() over (partition by Gallery_Id order by newid()) as seqnum 
     from Gallery_Image gi 
    ) gi 
where seqnum = 1; 

編輯:

爲了從Gallery表中獲取信息,同它一起:

select gi.* 
from (select gi.*, row_number() over (partition by Gallery_Id order by newid()) as seqnum 
     from Gallery_Image gi 
    ) gi join 
    Gallery g 
    on gi.Gallery_Id = g.Gallery_Id and 
     seqnum = 1; 

我也感動邏輯採取 「先」圖像到where子句中的on子句。

+0

我正在使用sql server 2008來解決這個問題 –

+0

@SunnySandeep。 。 。如果我正確解釋了這個問題,那麼該解決方案適用於該數據庫。 –

+0

我想選擇圖庫的名字也。所以請幫助我。我使用SQL Server 2008 –