2012-08-24 38 views
0

有一次,我需要你的幫助來從兩個以上的表數據,如何使用連接查詢不用擔心外鍵和主鍵

我有三個表在我的數據庫。

1>婚禮

Column Name Data Type 
------------------------------------- 
wedID   Int (primary key) 
wedName  varchar (50) 

2>selectSite

Column Name Data Type 
----------------------------------- 
wedID   Int (without foreign key and primary key with null allow) 
siteID  Int (without foreign key and primary key with null allow) 
siteStatus varchar(50) 

3>網站

Column Name Data Type 
--------------------------------  
siteID  Int (Primary Key) 
siteName  varchar(50) 
siteFile  varchar(MAX) 

我想要的FOL降脂輸出:

ws.siteID  ws.siteName  ws.siteFile s.wedID s.sitestatus 
---------------------------------------------------------------------------- 
1    Show   show.jpeg  6   Yes 
2    My View  my view.png 5  
3    Dream   dream.jpeg  3  

wswebSite表的別名,是ssiteSelect的別名。

webSite表,只有數據從siteSelect其中s.siteStatus不顯示Yes如果wedID不匹配

我嘗試以下SQL查詢

select 
    DISTINCT(ws.siteID), s.wedID, ws.siteName, 
    ws.siteFile, s.siteStatus 
from wedding wd, webSite ws 
left outer join siteSelect s on ws.siteID = s.siteID 
where wd.wedID = @wedID 

,但輸出的所有數據是這樣的:

ws.siteID  ws.siteName  ws.siteFile s.wedID s.sitestatus 
----------------------------------------------------------------------- 
1    Show   show.jpeg  6   Yes 
2    My View  my view.png 5   Yes 
3    Dream   dream.jpeg  3   Yes 

回答

0

試試這個

select 
    DISTINCT(ws.siteID), s.wedID, ws.siteName, ws.siteFile, 
    (case 
     when s.wedID = @wedID 
     then s.siteStatus 
     else '' end) as siteStatus, wd.wedName 
from webSite ws 
left join selectSite s on ws.siteID = s.siteID 
Left Join wedding wd on wd.wedID = s.wedID 
+2

'DISTINCT'不是一個函數。它是一個量詞集(可以使用'SELECT ALL'或'SELECT DISTINCT'),並且在這種情況下應用於整行(從結果集中刪除重複行)。 –

2

DEMO SQL FIDDLE

檢查演示添加一些值,你有和運行此查詢

select 
    ws.siteId, ws.siteName, ws.siteFile, ss.wedID, 
    (case 
     when ss.wedID = 1 then ss.siteStatus else '' end) as siteStatus 
from 
    website ws 
join 
    selectsite ss on ss.siteID=ws.siteID 

讓我KNW如有概率