-1

我在创建mysql查询时遇到问题。我有以下表格:objects, object_photos, photos

objects包含:id, street, etc..

object_photos包含:object_id, photo_id, sort_index

photos包含:id, file, etc...

我需要获取街道名称可能是“术语”的对象,获取属于该对象的照片,将这些照片作为对象的子数组。

如果可能的话,我希望原谅一个错字,如果它太难做,没问题,我会使用WHERE objects.street LIKE %term%并告诉人们输入街道名称的一部分。另外,我无法按 a 对照片进行排序sort_index并将这些照片限制为 1

通过谷歌搜索、阅读等,我提出了一个查询:

SELECT objects.id, object.street,
GROUP_CONCAT(photos.file) AS photo
FROM objects
LEFT JOIN object_photos
ON object_photos.object_id=objects.id
LEFT JOIN photos
ON photos.id=object_photos.photo_id
GROUP BY objects.id'

我不理解GROUP BY这个查询,这个查询缺少我需要上面提到的一些子句。

我希望你们能帮助我!

4

1 回答 1

0

我认为您不需要左连接。更好的做法是 GROUP BY 您的 SELECT 字段是聚合函数。

SELECT objects.id, object.street, GROUP_CONCAT(photos.file ORDER BY sort_index) AS photo 
FROM objects 
JOIN object_photos 
  ON object_photos.object_id=objects.id 
JOIN photos 
  ON photos.id=object_photos.photo_id
WHERE object.street LIKE '%term%'
GROUP BY objects.id, objects.street

我不明白您的“将这些照片限制为 1 张”的要求。您能否分享一些示例数据和预期输出

于 2013-10-04T13:40:31.263 回答