2010-05-25 118 views
0

我正在努力實現我的C#應用​​程序和SQL Server Express數據庫之間的數據連接。請記住我之前沒有使用過SQL查詢。如何構建SQL查詢

我有以下相關表格:

ArticlesCommon 
ArticlesLocalized 
CategoryCommon 
CategoryLocalized 

ArticlesCommon表包含與語言無關的信息,如價格,重量等

這是結現在:

SELECT * 
    FROM ArticlesCommon 
    INNER JOIN ArticlesLocalized ON ArticlesCommon.ID = ArticlesLocalized.ID 
WHERE ArticlesLocalized.Language = @language 
ORDER BY ArticlesCommon.DateAdded 

ArticlesCommon包含每行的類別標識。現在,我想用這個來查找本地化信息CategoryLocalized並把它添加到結果,像

SELECT *, CategoryLocalized.Name as CategoryName. 

如果我得到在我的角度,這是可行的?

編輯:

但是另一個問題。 ArticlesLocalized和ArticlesCommon都包含ID,這自然是相同的。我想從ArticlesCommon中選擇一切,但除了來自ArticlesLocalized的ID之外的所有內容。是否有簡明的方法來實現這一點?

我想這

SELECT * FROM .....

產量從所有所有的列連接的表?

回答

0

只需要添加另外加入

SELECT * FROM ArticlesCommon c 
    JOIN ArticlesLocalized L 
     ON a.ID = L.ID 
    JOIN CategoryLocalized CL 
     ON CL.ID = c.CategoryID 
WHERE ArticlesLocalized.Language = @language 
ORDER BY ArticlesCommon.DateAdded 

使用外部聯接如果不是在ArticlesCommon每一行都有一個類別編號

SELECT * FROM ArticlesCommon c 
    JOIN ArticlesLocalized L 
     ON a.ID = L.ID 
    Left [OUTER] JOIN CategoryLocalized CL 
     ON CL.ID = c.CategoryID 
WHERE ArticlesLocalized.Language = @language 
ORDER BY ArticlesCommon.DateAdded 
  • [OUTER]是可選的,如[左]意味着OUTER
+0

謝謝。希望我可以把你們兩個都當成正確的答案,但我會設置一個先回答的人,看你的回答非常相似。 我編輯了另一個問題,如果你能幫助我,我會很感激。 – Max 2010-05-25 21:09:06

1

你需要加入的關鍵是什麼

這是行不通的?

SELECT * FROM ArticlesCommon 
INNER JOIN ArticlesLocalized ON 
ArticlesCommon.ID = ArticlesLocalized.ID 
INNER JOIN CategoryLocalized ON ArticlesCommon.ID = CategoryLocalized.ID 
WHERE ArticlesLocalized.Language = @language 
ORDER BY ArticlesCommon.DateAdded 
+0

如果CategoryLocalized.ID是ArticlesLocalized.ID上的相同信息,它應該可以工作。但如果@Max混合概念,它不會。也許ArticlesCommon有一個CategoryLocalizedID字段。在這種情況下,他會添加這一行INNER JOIN CategoryLocalized ON ArticlesCommon.CategoryLocalizedID = CategoryLocalized.ID – 2010-05-25 18:08:28