我在创建mysql
查询时遇到问题。我有以下表格:objects, object_photos, photos
objects
包含:id, street, etc..
object_photos
包含:object_id, photo_id, sort_index
photos
包含:id, file, etc...
我需要将streetname的对象设置为'term',获取属于该对象的照片,将这些照片作为对象的子数组。
如果有可能,我想要打印错误,如果它太难做,没问题,我将使用WHERE objects.street LIKE %term%
并告诉人们输入街道名称的一部分。
此外,我无法按照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
,而且这个错过了我上面提到的一些条款。
我希望你们有人能帮帮我!
答案 0 :(得分: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”的要求。你能分享一些样本数据和预期的输出
吗?