Задать вопрос

Как упростить выборку?

Всем привет!
Есть таблица, в которой хранятся записи пользователей.
Запросить записи из БД не составляет труда SELECT * FROM `wall` WHERE `user_id` = 333.
Но проблема в том, что у каждой записи могут быть прикреплены изображения и видео, которые хранятся в таблицах images и videos соответственно.

Выходит, что при выборке скажем сотни записей получается грубо такой код:
$res = $db->query("SELECT * FROM `wall` WHERE `user_id` = 333");
while($row = $res->fetch_assoc()){
   // получаем изображения если есть
   $imgs = $db->query("SELECT * FROM `images` WHERE `wall_id` = $row['id']");
   // получаем видео если есть
   $videos = $db->query("SELECT * FROM `videos` WHERE `wall_id` = $row['id']");
}


Получается дл каждой записи дополнительно 2 запроса, в итоге на 100 записей - 200 запросов, в результат хочу получить вот такой:

{
   "response": {
      "count": 1067,
      "items": [{
         "id": 56465464,
         "title": "название записи",
         "attachment": [{
            "type": "image",
            "id": 213113,
            "link": "/uploads/images/imagename.jpg"
         }]
      }],
   }
}
  • Вопрос задан
  • 252 просмотра
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
@RidgeA
https://dev.mysql.com/doc/refman/5.7/en/join.html
как-то так
SELECT * FROM table1
LEFT JOIN table2 ON table2.ref = table1.id
LEFT JOIN table3 ON table3.ref = table1.id
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы