У меня есть таблица статей с идентификатором, заголовком и другими.
У меня есть еще одна таблица, которая содержит все изображения для каждой статьи, называемая imagePath, в которой хранится путь к изображениям. Он содержит id, path, articleId и другие.
Каждая статья может иметь много изображений.
Я хочу получить статью и связанные изображения наилучшим образом.
Вариант 1:
SELECT a.id,a.title,b.path
FROM articles a, imagepaths b
WHERE a.id=b.articleId
LIMIT 10;
Проблема: это дает повторяющиеся результаты. Строки статьи дублируются для каждого изображения в imagepath
Вариант 2:
SELECT *
FROM imagepath
WHERE articleId='111111'
Но это должно быть сделано для каждого изображения. У меня есть страницы, на которых показаны тезисы статей для сотен статей. Если предположить, что 100 статей с двумя изображениями в каждой, то это потребует 1 вызова таблицы статей и 200 вызовов таблицы imagepath.
Как бы вы это сделали?
** Update **
Как насчет использования GROUP_CONCAT () следующим образом:
select a.id,a.title,GROUP_CONCAT(b.imagePath) from articles a
inner join imagePaths b on a.id=b.unique_id
group by a.id limit 3
Результат:
id | title | GROUP_CONCAT(b.imagePath)
1 | 'title1' | path1,path2
2 | 'title2' | path3,path4,path5
3 | 'title3' | path6
это дает всю необходимую информацию. Но запрос занимает 0,25 с. Я немного медлителен, учитывая, что мне может потребоваться выполнить много запросов.
Лучшее, что мы можем сделать?