如何在SQL Server CE中联接具有不同列的两个表? [英] How do I join two tables with different column in SQL Server CE?
问题描述
如何在SQL Server CE中联接具有不同列的两个表?
How can I joining two tables with different column in 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
列应由-
填充.
Where the Description
column should be filled in by -
when the ID is not on the Description
table.
我尝试了以下代码:
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子句时:
And when I tried to give ON Clause:
SELECT S.ID, D.Description
FROM Schedule AS S
INNER JOIN Description AS D ON S.ID = D.ID
它只是获得ID
在Description
表上的行,例如:
It just get the row where the ID
is on the Description
table, like:
+-----+----------+-----------------+
+ ID + Name + Description +
+-----+----------+-----------------+
+ 1 + A + A1 - XXXXX +
+-----+----------+-----------------+
我该怎么做?
[UPDATE]
我尝试了此代码,它可以工作:
I tried this code and it works:
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
)?
But now, how can I add a WHERE clause on it (pls see table SCHEDULE
above)?
我尝试过:
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'
但仍要获取全部行.
推荐答案
SQL Server CE中的左外部联接
您需要使用LEFT OUTER JOIN
在键字段 ID 上联接表 Schedule 和 Description .另外,使用COALESCE
将<描述>列中的NULL值替换为-
LEFT OUTER JOIN in SQL Server CE
You need to use LEFT OUTER JOIN
to join the tables Schedule and Description on the key field ID. Also, use COALESCE
to replace NULL values in Description column with -
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
输出:
在 Microsoft SQL Server CE version 4.0.8482.1
Output:
Tested in Microsoft SQL Server CE version 4.0.8482.1
您需要在 JOIN 之后添加WHERE
子句.如果您打算使用ORDER BY
,则应在WHERE
子句之后.
You need add the WHERE
clause after the JOINs. If you are planning to having an ORDER BY
, it should come after the WHERE
clause.
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 (S.Type = 1)
输出:
在 Microsoft SQL Server CE version 4.0.8482.1
Output:
Tested in Microsoft SQL Server CE version 4.0.8482.1
这篇关于如何在SQL Server CE中联接具有不同列的两个表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!