【发布时间】:2012-05-16 12:49:58
【问题描述】:
如何在 SQL Server CE 中连接两个具有不同列的表?
我有两张桌子:
表时间表
+-----+----------+------+
+ ID + Name + Type +
+-----+----------+------+
+ 1 + A + 1 +
+ 2 + B + 1 +
+ 3 + C + 2 +
+-----+----------+------+
表格说明
+-----+--------------------+
+ ID + Description +
+-----+--------------------+
+ 1 + A1 - XXXXX +
+-----+--------------------+
而我想要得到的是这样的表格:
+-----+----------+-----------------+
+ ID + Name + Description +
+-----+----------+-----------------+
+ 1 + A + A1 - XXXXX +
+ 2 + B + - +
+ 3 + C + - +
+-----+----------+-----------------+
当 ID 不在 Description 表中时,Description 列应由 - 填写。
我试过这段代码:
SELECT S.ID, D.Description
FROM Schedule AS S
INNER JOIN Description AS D
但是导致:
+-----+----------+-----------------+
+ ID + Name + Description +
+-----+----------+-----------------+
+ 1 + A + A1 - XXXXX +
+ 2 + B + A1 - XXXXX +
+ 3 + C + A1 - XXXXX +
+-----+----------+-----------------+
当我试图给出 ON 子句时:
SELECT S.ID, D.Description
FROM Schedule AS S
INNER JOIN Description AS D ON S.ID = D.ID
它只是获取ID 在Description 表上的行,例如:
+-----+----------+-----------------+
+ ID + Name + Description +
+-----+----------+-----------------+
+ 1 + A + A1 - XXXXX +
+-----+----------+-----------------+
我该怎么做?
[更新]
我试过这段代码,它可以工作:
SELECT S.ID, S.Name, COALESCE (D.Description, '-') AS Description
FROM Schedule AS S
LEFT OUTER JOIN Description AS D ON S.ID = D.ID
但是现在,如何在其上添加 WHERE 子句(请参见上面的表 SCHEDULE)?
我试过了:
SELECT S.ID, S.Name, COALESCE (D.Description, '-') AS Description
FROM Schedule AS S
LEFT OUTER JOIN Description AS D ON S.ID = D.ID AND S.Type = '1'
但仍然得到整行。
【问题讨论】:
标签: tsql join sql-server-ce