SQL表中的所有数据表2中的一些数据

时间:2016-10-03 16:47:30

标签: sql

可能是一个愚蠢的问题:但是我已经花了足够的时间,我真的需要一些外界的帮助。

我有一个表有一个名字列表:其中一些可能不在表二中,我需要列出所有名字。

在第二个表中,我有一些相同的名称,但这些名称可以列出事件日期和事件类型。

我如何列出表一中的所有名称。 并且还包括给定特定事件类型的表2中的事件。

这意味着表1中的名称未链接到表2中仍会打印的事件。

我已经尝试过左外连接:但仍然无法弄清楚如何限制来自第二表的数据:或者如果我放置一个where子句,where子句似乎无效添加表1中的所有名称,因为它们不符合参数我放在表2上。

1 个答案:

答案 0 :(得分:0)

对于SQL Server,我的建议是这样的:

CREATE TABLE tblNames(
    Name NVARCHAR(MAX) NOT NULL)
GO

INSERT INTO tblNames (Name) VALUES ('Jim'), ('Jack'), ('Joe')
GO

CREATE TABLE tblEvents(
    Name NVARCHAR(MAX) NOT NULL,
    EventDate NVARCHAR(max) NOT NULL,
    EventType NVARCHAR(max) NOT NULL)
GO

INSERT INTO tblEvents (Name, EventDate, EventType) VALUES
    ('Jim', '04/05/2000', 'Birthday'),
    ('Joe', '01/01/1999', 'Marriage')
GO

SELECT 
    tblNames.Name,
    tblEvents.EventDate,
    tblEvents.EventType 
FROM tblNames
    LEFT OUTER JOIN tblEvents
        ON tblNames.Name = tblEvents.Name 
            AND tblEvents.EventType = 'Birthday'

它将为您提供列名称中的所有名称,如果tblEvents中有匹配事件类型的条目,您将在其他列中包含该信息。