Mysql 如何连接两个表

Mysql 如何连接两个表,mysql,sql,join,Mysql,Sql,Join,我有两个表,分别是EventTable和VenueTable 我用对方的prinamrykey作为外键。表结构如下: EventID|VenueID|EventName 1 | 1 | Event1 2 | 1 | Event2 3 | 2 | Event3 VenueId|EnevtID|VenueNAme 1 | 1 | Venue1 2 | 2 | Venue2 VenueID |

我有两个表,分别是EventTableVenueTable

我用对方的prinamrykey作为外键。表结构如下:

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
我希望结果如下

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 VenueID, VenueName, EventID, EventName
    from EventTable, VenueTable
    where EventTable.VenueID = VenueTable.VenueID
记住mysql的分隔符吗

SELECT v.VenueID, v.VenueName, v.EventID, e.EventName
FROM VenueTable v
INNER JOIN EventTable e  ON (v.EventId = e.EventId)
甚至

SELECT v.VenueID, v.VenueName, v.EventID, e.EventName
FROM VenueTable v, EventTable e 
WHERE v.EventId = e.EventId
试试这个:

SELECT
    v.VenueID,
    v.VenueName,
    v.EventID,
    e.EventName
FROM
    VenueTable v
INNER JOIN
    EventTable e 
    ON (v.EventId = e.EventId)

UNION

SELECT
    v.VenueID,
    v.VenueName,
    v.EventID,
    e.EventName
FROM
    VenueTable v
INNER JOIN
    EventTable e 
    ON (v.VenueID = e.VenueID)

这模拟了MySQL中的完整外部联接

从事件E中选择v.VenuId、v.VenueName、E.EventId、E.EventName,然后在E.EventId=v.EventId上选择E.EventName。在EventTable中,eventId 2位于场馆1,在VenueTable中,venueId 2具有事件2。此外,在您的预期结果中,您提到EventId 2有两个与上表相矛盾的地方。@rohanpanchal-您的查询看起来不错。正如Bhavik提到的,您的表可能缺少一条记录。根据我的说法,您的表结构不正确。您知道,您已经将VenueId和EventId关系分发到两个表。VenueId=2和EventId=2的关系映射在场馆表中,但不映射在事件表中。您最好重新构造表并将所有事件放在事件表中,在EventsTable中映射eventId和VenueId之间的关系,在Vincement表中只允许VenueId和VenueName。这样,连接查询将更容易实现并获得所需的结果。@Bhivik shah-是的EventID 2有两个地点,即Venue1和Venue2事件表Reffer Venue1和Venuetable Reffer EvnetID 2,即地点2。那么如何连接这两个地点???使用ANSI连接而不是传统连接为什么这可以解决OP的问题?如果有两个表,其中任何一个表的最大记录数为3,那么您将返回的带有内部联接的最大记录数为3…我将op解释为请求查询以获得结果,而不是必须使用内部联接,op必须澄清其问题,否则我看不到您的注释的用途?这是相同的查询,仅以OP创建的ANSI形式。结果是问题,而不是查询的样式。**MySQL服务器版本,以便使用接近“完全外部连接**的正确语法在上述查询中没有
完全外部连接
。再试一次-只复制代码块中的脚本。@ Ruhan-SuMIT在他对你的问题的评论中提到,你真的应该考虑改变你的表的设计。在两个表中存储两个键而不创建一个组合键不是一个好主意。@Nicrus-我知道,但我不能更改表bcs的设计,它会影响页面代码,需要在项目中进行大量更改,到目前为止工作正常,只有一件事我需要更改。好的。我的剧本对你有帮助吗?