2012-07-03 57 views
0

我有以下表格。我想運行一個查詢,但我認爲我的初學者tsql級別在這裏沒有幫助..這可能也是我有一個不好的數據庫設計的情況。根據其他表中的值加入表格

tables

基本上,我需要從tblPhotoGalleries選擇所有字段。此外,我需要創建一個名爲GalleryCategoryName的獨立字段。

GalleryCategoryName字段將是pCatNametblPhotoGalleryCats

如果pCatNametblPhotoGalleryCats = '0',那麼這將意味着,ConnectedNewsCatID是非0的東西。在這種情況下,

GalleryCategoryName將類別名稱字段從tblNewsCategories其中CategoryID = ConnectedNewsCatID

+0

請提供樣本數據和期望的輸出。 – RedFilter

+0

只是想指出命名約定的不一致性;一些字段被拼寫出來,像CategoryID,其他字段被縮寫爲pCatID。表格也一樣。這是我個人的偏好,但我更喜歡漂亮和拼寫出來的名字;它更容易閱讀和使用... –

+0

我同意你@Dmitriy。如果在項目開始的時候沒有計劃整個事情,並且您將db任務交給設計人員,那會發生什麼! –

回答

0

使用左連接的新聞類別表,並使用CASE表達式的名稱之間進行選擇:

select 
    g.pgID, g.gName, 
    GalleryCategoryName = case c.pCatName when '0' then n.CategoryName else c.pCatName end 
from tblPhotoGalleries g 
inner join tblPhotoGFalleryCats c on c.pCatID = g.FK_pCatID 
left join tblNewsCategories n on n.CategoryOd = c.ConnectedNewsCatID 
+0

非常感謝!那樣做了.. –

0

嘗試從這裏開始:

select *, 
    case when PGC.pCatName = '0' then NC.CategoryName else PGC.pCatName end as [CatName] 
    from tblPhotoGalleries as PG inner join 
    tblPhotoGalleryCats as PGC on PGC.pCatID = FK_pCatID left outer join 
    tblNewsCategories as NC on NC.CategoryId = ConnectedNewsCatID 
相關問題