0

私は3つのテーブルを持っています

POIには、行ごとに一意の ID を持つ一意の行が含まれています

各ポイの複数のレコードを含む場合と含まない場合がある画像

レビューには、表 1 の各 POI について複数のレコードが含まれる場合もあります

レビューからすべての行を取得したいのですが、画像に画像がある場合は、最初のレコードのファイル名を取得し、 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 にリンクされた各画像のレコード)。複数の画像がある場合でも、レビューごとに 1 つのレコードに変更できますか? または

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 に答える