如何在SQL Server CE中联接具有不同列的两个表? [英] How do I join two tables with different column in SQL Server CE?

查看:86
本文介绍了如何在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

它只是获得IDDescription表上的行,例如:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆