获取SQL Server 2008查询中的冲突事件

获取SQL Server 2008查询中的冲突事件,sql,sql-server-2008,Sql,Sql Server 2008,我有以下模式和相关数据 -- Schema CREATE TABLE [PERSON] ( [id] int NOT NULL, [first_name] varchar(50) NOT NULL, [last_name] varchar (50) NOT NULL CONSTRAINT [PK__PERSON] PRIMARY KEY ([id]) ) GO CREATE TABLE [EVENT] ( [id] int NOT NULL,

我有以下模式和相关数据

-- Schema
CREATE TABLE [PERSON] (
    [id] int NOT NULL,
    [first_name] varchar(50) NOT NULL,
    [last_name] varchar (50) NOT NULL
    CONSTRAINT [PK__PERSON] PRIMARY KEY ([id])
) 
GO

CREATE TABLE [EVENT] (
    [id] int NOT NULL,
    [name] varchar(50) NOT NULL
    CONSTRAINT [PK__EVENT] PRIMARY KEY ([id])
)
GO

CREATE TABLE [EVENT_PARTICIPANT] (
    [event_id] int NOT NULL,
    [person_id] int NOT NULL
    CONSTRAINT [PK__EVENT_PARTICIPANT] PRIMARY KEY ([event_id], [person_id])
)
GO

ALTER TABLE [EVENT_PARTICIPANT] ADD CONSTRAINT [FK__EVENT__EVENT_PARTICIPANT__event_id]
    FOREIGN KEY ([event_id])
    REFERENCES [EVENT]([id])
GO

ALTER TABLE [EVENT_PARTICIPANT] ADD CONSTRAINT [FK__PERSON__EVENT_PARTICIPANT__person_id]
    FOREIGN KEY ([person_id])
    REFERENCES [PERSON]([id])
GO

-- data
INSERT INTO [PERSON] VALUES(1, 'Alpha', 'A')
INSERT INTO [PERSON] VALUES(2, 'Bravo', 'B')
INSERT INTO [PERSON] VALUES(3, 'Charlie', 'C')
INSERT INTO [PERSON] VALUES(4, 'Delta', 'D')
INSERT INTO [PERSON] VALUES(5, 'Echo', 'E')
INSERT INTO [PERSON] VALUES(6, 'Foxtrot', 'F')
INSERT INTO [PERSON] VALUES(7, 'Golf', 'G')
INSERT INTO [PERSON] VALUES(8, 'Hotel', 'H')
INSERT INTO [PERSON] VALUES(9, 'India', 'I')
INSERT INTO [PERSON] VALUES(10, 'Juliet', 'J')
GO

INSERT INTO [EVENT] VALUES(1, 'Event A')
INSERT INTO [EVENT] VALUES(2, 'Event B')
INSERT INTO [EVENT] VALUES(3, 'Event C')
INSERT INTO [EVENT] VALUES(4, 'Event D')
INSERT INTO [EVENT] VALUES(5, 'Event E')
INSERT INTO [EVENT] VALUES(6, 'Event F')
INSERT INTO [EVENT] VALUES(7, 'Event G')
INSERT INTO [EVENT] VALUES(8, 'Event H')
INSERT INTO [EVENT] VALUES(9, 'Event I')
INSERT INTO [EVENT] VALUES(10, 'Event J')
GO

INSERT INTO [EVENT_PARTICIPANT] VALUES(1,1)
INSERT INTO [EVENT_PARTICIPANT] VALUES(1,2)
INSERT INTO [EVENT_PARTICIPANT] VALUES(1,3)
INSERT INTO [EVENT_PARTICIPANT] VALUES(2,4)
INSERT INTO [EVENT_PARTICIPANT] VALUES(2,5)
INSERT INTO [EVENT_PARTICIPANT] VALUES(2,6)
INSERT INTO [EVENT_PARTICIPANT] VALUES(3,5)
INSERT INTO [EVENT_PARTICIPANT] VALUES(3,6)
INSERT INTO [EVENT_PARTICIPANT] VALUES(4,1)
INSERT INTO [EVENT_PARTICIPANT] VALUES(4,4)
INSERT INTO [EVENT_PARTICIPANT] VALUES(5,1)
INSERT INTO [EVENT_PARTICIPANT] VALUES(6,7)
INSERT INTO [EVENT_PARTICIPANT] VALUES(7,8)
INSERT INTO [EVENT_PARTICIPANT] VALUES(8,9)
GO
我需要找到所有存在匹配参与者的冲突事件,以便查询为每个事件返回与之冲突的事件列表。即使一个人匹配,匹配也不必是100%,这意味着事件彼此冲突

我已经为每个事件生成了一个以逗号分隔的事件参与者列表,但在如何编写有效的查询以获取SQL Server 2008冲突事件方面有些困难


谢谢

您可以尝试此查询:

选择不同的ep1.event\u id、ep2.event\u id
来自活动参与者ep1
内部加入事件\u参与者ep1上的ep2.person\u id=ep2.person\u id
其中ep1.event\u id ep2.event\u id

按1,2排序

,因此,一个活动可以有多人参与。然而,如果一个人有一个以上的事件,那就是冲突。对的此外,您希望如何准确列出输出?事件1,事件2?你需要说明谁有冲突吗?如果一个人有3个冲突事件怎么办?你从来没有解释过什么是“冲突事件”。举个例子就可以了。您的示例数据的预期输出会更好。请不要把我们留在黑暗中!谢谢!这么简单的一个查询,我想不出来。看来我需要休假了P