0

我有三张桌子

POI包含唯一的行,每行都有唯一的 ID

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

评论也可能包含表 1 中每个兴趣点的多条记录

我想从评论中检索所有行,如果图像中有图像,则获取第一条记录的文件名并包括来自POI的名称国家

这是我到目前为止所拥有的:

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 的每个图像的记录)即使可能有多个图像,是否可以将其修改为每个评论只有一个记录?或者

4

2 回答 2

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;

让我知道这是否不符合您的要求。

于 2013-09-20T15:18:15.220 回答
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;
于 2013-09-20T16:36:46.087 回答