繁体   English   中英

MySQL查询多对一联接

[英]MySQL Query many-to-one join

我正在使用一个查询,该查询使用引用一个表的几列中的ID来获取有关该ID的信息。 这是代码:

SELECT `Events`.EventID,
       `Events`.AssociationID,
       `Events`.Association2ID,
       `Events`.Association3ID,
       `Events`.Association4ID,
       `Events`.Association5ID,
       `Events`.DateFrom,
       `Events`.DateTo,
       `Events`.EventName,
       `Events`.VenueID,
       `Events`.TestnTune,
       `Events`.ShownShine,
       `Events`.SpecialInfo,
       `Events`.OtherInfo,
       `Events`.Rating,
       `Events`.EventOverlay,
       `Events`.HavePictures,
       `Events`.IncludeInSchedule,
       `Events`.EventURL,
       Associations.Active,
       Associations.Acronym,
       Associations.OrgName,
       Associations.WebURL,
       Associations.LogoURL,
       Venues.LocationName,
       Venues.Location,
       Venues.longetude,
       Venues.latitude,
       Venues.Directions,
       Venues.SitePros,
       Venues.SiteCons,
       Venues.BasicInfo,
       Venues.SiteRating,
       Venues.HostedEvents,
       Venues.CurrentWeather
     FROM `Events`
LEFT JOIN Associations ON `Events`.AssociationID = Associations.AssociationID 
                      AND `Events`.Association2ID = Associations.AssociationID 
                      AND `Events`.Association3ID = Associations.AssociationID 
                      AND `Events`.Association4ID = Associations.AssociationID 
                      AND `Events`.Association5ID = Associations.AssociationID
LEFT JOIN Venues ON `Events`.VenueID = Venues.VenueID
    WHERE `Events`.DateFrom >= NOW()

我要做的是捕获有关每个ID的详细信息。 我不知道该怎么做。 例如:

For Association2ID:
    Associations.Active,
    Associations.Acronym,
    Associations.OrgName,
    Associations.WebURL,
    Associations.LogoURL

For Association3ID
    Associations.Active,
    Associations.Acronym,
    Associations.OrgName,
    Associations.WebURL,
    Associations.LogoURL,
etc.

如果将JOIN更改为

LEFT JOIN Associations ON 
Associations.AssociationID IN (`Events`.AssociationID,
                               `Events`.Association2ID, 
                               `Events`.Association3ID, 
                               `Events`.Association4ID, 
                               `Events`.Association5ID)

这样会改善吗?

您可能还应该考虑将事物重组为第一范式

而不是为潜在的AssociationID保留5列,而是对这种多对多关系ID进行建模的正常方法,以使用具有两列AssociationIDEventId的联结表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM