【问题标题】:MySQL Select IF INNER JOINMySQL 选择 IF INNER JOIN
【发布时间】:2016-10-07 00:26:37
【问题描述】:

我有 3 张桌子:

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

这就是我想要的:

当图片类型为1时图片.associateId=place.placeId 返回路径

当图片类型为2时图片.associateId=event.eventId 返回路径

1 个地点 -> 很多活动

1 个地点 -> 一张图片

1 个事件 -> 一张图片

可能是这样的(请帮助):

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)

此咨询返回给我一个 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

【问题讨论】:

  • 请使用 SHOW CREATE TABLE 添加您的表格
  • 1个地方可以有很多活动,1个地方/活动只能有1张图片
  • 请提供所有三个表的一些示例数据。另外,请向我们展示如果您要在该示例数据上运行 SQL 输出,您期望它的输出是什么。
  • 我已尝试格式化您的问题,但我仍然无法理解,尤其是“这就是我想要的”部分。请尽量使用圆句 - 如果您的英语不是很好,这不是问题,尽管至少遵循these 拼写规则可以大大改善您的帖子。

标签: php jquery mysql json


【解决方案1】:

用这个运行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
       }

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2016-06-09
    • 1970-01-01
    • 2020-05-07
    相关资源
    最近更新 更多