简体   繁体   English

MySQL选择IF INNER JOIN

[英]MySQL Select IF INNER JOIN

I have 3 tables: 我有3张桌子:

place (placeId,placeName,...)
event (eventId, eventName,...)
picture (pictureId,associateId,picturePath,type [1 place 2 event])

This is what I want: 这就是我要的:

When picture type is 1 picture.associateId=place.placeId return path 当图片类型为1图片时.associateId = place.placeId返回路径

when picture type is 2 picture.associateId=event.eventId return path 当图片类型为2 picture.associateId = event.eventId返回路径

1 place -> many events 1个地方 - >很多活动

1 place -> one picture 1个地方 - >一张图片

1 event -> one picture 1个事件 - >一张图片

May be something like this (please help): 可能是这样的(请帮助):

SELECT Place.placeName, Picture.picturePath, Event.eventId, ... FROM Place INNER JOIN Event ON Place.placeId = Event.eventPlace INNER JOIN Picture ON (IF Picture.type=1 return Picture.picturePath ELSE Picture.type=2 return Picture.picturePath)

This consult return me a json to show events on a page deppending of the date: 这个咨询返回给我一个json来显示日期的页面上的事件:

SELECT Place.placeName, Place.placePopularity, Picture.picturePath, Event.eventId, Event.eventCount
FROM Place INNER JOIN Picture ON Place.placeId = Picture.associateId 
    INNER JOIN Event ON Place.placeId = Event.eventPlace
WHERE Picture.type = 2 AND Event.eventDate = '$date'
ORDER BY Event.eventCount DESC

Run an if else with this 用这个运行if else

    if () { // picture type 1
        // this is the query
        $query = "SELECT pictureTable.picture_path FROM placeTable INNER JOIN picture_table ON placeTable.placeId = picture_table.associateId";
        } else { // picture type 2 means for event

        $query = "SELECT pictureTable.picture_path FROM eventTable INNER JOIN  picture_table ON eventTable.eventId = picture_table.associateId";
       // now you can get the result
       }

Hope this helps. 希望这可以帮助。

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

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