【发布时间】:2014-04-15 08:48:48
【问题描述】:
我目前遇到了一个我正在尝试组合的 SQL 查询。
这是表格布局:
表一:
tblUsers 此表包含更多列,但在示例中不是必需的
- 用户 ID(整数)
样本数据:
------
| ID |
------
| 1 |
------
| 2 |
------
表2:
tblColumns
- 列 ID(整数)
- 列名 (nvarchar)
样本数据:
--------------------
| ID | Column Name |
--------------------
| 1 | Name |
--------------------
| 2 | Email |
--------------------
| 3 | Age |
--------------------
表 3:
tblColumnData
- ColumnDataID (int)
- 用户 ID (int) (FK)
- ColumnID (int) (FK)
- ColumnDataContent (nvarchar)
样本数据:
----------------------------------------------
| ID | UserID | ColumnID | ColumnDataContent |
----------------------------------------------
| 1 | 1 | 1 | John Smith |
----------------------------------------------
| 2 | 1 | 2 | john@email.com |
----------------------------------------------
| 3 | 1 | 3 | 45 |
----------------------------------------------
| 4 | 2 | 2 | james@email.com |
----------------------------------------------
| 5 | 2 | 3 | 30 |
----------------------------------------------
您将在上面看到,UserID:2 在 tblColumnData 表中没有 ColumnID 1 的记录,即 NAME 列。即使它是 NULL,我仍然需要它出现在结果中。
所以我试图让数据像这样返回:
------------------------------------------------------
| UserID | ColumnID | ColumnName | ColumnDataContent |
------------------------------------------------------
| 1 | 1 | Name | John Smith |
------------------------------------------------------
| 1 | 2 | Email | john@email.com |
------------------------------------------------------
| 1 | 3 | Age | 45 |
------------------------------------------------------
| 2 | 1 | Name | NULL or '' |
------------------------------------------------------
| 2 | 2 | Email | james@email.com |
------------------------------------------------------
| 2 | 3 | Age | 30 |
------------------------------------------------------
我的选择如下所示:
SELECT cd.UserID,c.ColumnID,c.ColumnName,cd.ColumnDataContent
FROM tblColumns c
INNER JOIN tblColumnData cd ON c.ColumnID=cd.ColumnID
我尝试了 INNER、OUTER、LEFT.... 等所有不同的连接,但没有成功。
希望有人可以提供帮助:)
谢谢
【问题讨论】:
-
您能否将示例数据放在 sqlfiddle.com 上
-
使用
LEFT JOIN而不是INNER JOIN -
@Sameer:OP 提到 “我已经尝试了 INNER、OUTER、LEFT.... 等所有不同的连接,但没有成功”
-
@huMptyduMpty:我无法在 sqlfiddle 中执行此操作,因为它目前处于关闭状态。
-
@Aki: 是的,现在好像不行
标签: sql sql-server join