【发布时间】:2013-01-07 07:17:00
【问题描述】:
我有两个表,分别是 EventTable 和 VenueTable
我使用彼此的主键作为外键。表结构如下;
EventID|VenueID|EventName
1 | 1 | Event1
2 | 1 | Event2
3 | 2 | Event3
VenueId|EnevtID|VenueNAme
1 | 1 | Venue1
2 | 2 | Venue2
我想要的结果如下;
VenueID | VenueName | EventID | EventName
1 | Venue1 | 1 | Event1
1 | Venue1 | 2 | Event2
2 | Venue2 | 2 | Event2
2 | Venue2 | 3 | Event3
我已经使用内部连接来做到这一点。但无法得到预期的结果。
如何做到这一点?
谢谢..
【问题讨论】:
-
Select v.VenuId,V.VenueName,E.EventId,E.EventName FROM Event E INNER JOIN Venue V ON E.EventID =V.EventID
-
我认为您上面提到的表格有问题/缺失。在 EventTable 中,eventId 2 位于场地 1,而在 VenueTable 中,venueId 2 有事件 2。此外,在您的预期结果中,您提到 EventId 2 有两个与上述表格相矛盾的场地。
-
@rohanpanchal - 您的查询看起来不错。正如 Bhavik 提到的,您的表格可能缺少记录。
-
在我看来,您的表结构不正确。您会看到,您已将 VenueId 和 EventId 关系分配到两个表。 VenueId = 2 和 EventId = 2 的关系映射在 Venue 表中,但不在 Events 表中。最好重组表并将所有事件放在事件表中,在EventsTable中映射eventId和VenueId之间的关系,并在Venue Table中只保留VenueId和VenueName。这样,连接查询将更容易实现并为您提供所需的结果。
-
@ Bhivik shah - 是 EventID 2 有 2 个场地,即 Venue1 和 Venue2 事件表 Reffer 场地 1 和 Venuetable Reffer EvnetID 2 即场地 2 那么如何加入这两个???