返回MySQL中存在多个链接记录的单个记录

时间:2013-09-20 14:53:40

标签: mysql

我有三张桌子

POI 包含每行具有唯一ID的唯一行

图片,可能/可能不包含每个poi的多个记录

评论还可能包含表1中每个POI的多条记录

我想从评论中检索所有行,如果图片中有图片,请获取第一条记录的文件名,并在 POI <中包含名称国家/地区/ strong>

这是我到目前为止所做的:

SELECT
  Reviews.review_id,
  Reviews.poi_id,
  Reviews.review,
  POI.Name,
  Images.file
FROM
  Reviews
  LEFT JOIN POI ON Reviews.poi_id = POI.ID
  LEFT JOIN Images ON Reviews.poi_id = Images.ID
ORDER BY
  POI.Name;

但这会返回多条记录(即链接到POI的每张图片的记录) 即使可能有多个图像,这可以修改为每个评论只有一条记录吗?或者

2 个答案:

答案 0 :(得分:1)

我想你只想要这个:

SELECT
  DISTINCT Reviews.review_id,
  Reviews.poi_id,
  Reviews.review,
  POI.Name,
  Images.file
FROM
  Reviews
  LEFT JOIN POI ON Reviews.poi_id = POI.ID
  LEFT JOIN Images ON Reviews.poi_id = Images.ID
ORDER BY
  POI.Name;

如果那不符合您的要求,请告诉我。

答案 1 :(得分:1)

您可以使用相关子查询执行此操作:

SELECT
  Reviews.review_id
  Reviews.review_id,
  Reviews.poi_id,
  Reviews.review,
  POI.Name,
  SELECT (
    Images.file
    FROM Images 
    WHERE Reviews.poi_id = Images.ID
    ORDER BY Images.ID ASC
    LIMIT 1
  )
FROM
  Reviews
JOIN POI ON Reviews.poi_id = POI.ID
ORDER BY
  POI.Name;