【发布时间】:2014-02-04 10:48:42
【问题描述】:
我有表 event、session、sessionspeaker、speaker 和 Employee event 表有 EventID 作为 PK,session 表可以有多个 Eventid 并且有 sessionid 作为 pk,speaker 表有 speakerid 作为 pk 并且有 empID 列,employee 表的 empID 为 PK。 sessionspeaker 表有 (sessionid, speakerid) 作为 pk。 现在我想拥有所有带有 Topmost emplID 的 eventid,这样事件 id 是唯一的
SELECT emp.EmployeeID, e.EventID
FROM Event AS e INNER JOIN Session ON e.EventID = Session.EventID left outer JOIN
SessionSpeaker ON Session.SessionID = SessionSpeaker.SessionID INNER JOIN
Speaker ON SessionSpeaker.EmployeeID = Speaker.EmployeeID INNER JOIN
Employee AS emp ON Speaker.EmployeeID = emp.EmployeeID
这个查询返回
EmployeeID EventID
5351 310
5351 310
5352 299
5352 300
5352 301
5352 302
5352 303
5352 314
5352 315
这是我不想要的,我想要唯一的事件 ID 和最顶层的员工 ID 请让我知道一个简单的方法来解决这个问题。 将在这件事上进行分组,有或计算帮助
【问题讨论】:
标签: sql sql-server join