我正在努力在我的C#应用程序和SQL Server Express数据库之间实现数据连接。请记住,之前我没有使用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
包含每行的类别ID。现在,我想使用它在CategoryLocalized
中查找本地化信息并将其添加到结果中,例如
SELECT *, CategoryLocalized.Name as CategoryName.
如果我明白了我的观点,这可行吗?
编辑:
另一个问题。 ArticlesLocalized和ArticlesCommon都包含ID,它们自然是相同的。我想从ArticlesCommon中选择所有内容,但除了来自ArticlesLocalized的ID之外的所有内容。是否有简洁的方法来实现这一目标?
我想那个
SELECT * FROM .....
从所有连接表中产生所有列?
答案 0 :(得分: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
答案 1 :(得分: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中的每一行都有一个CategoryId
,请使用外连接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