@atambalasi

Как за один запрос получить данные из 4 таблиц?

Есть таблицы
385179bd692a430e980db3943ed30565.png
Запрос должен начинатся с таблицы comments берется последнее 10.
Возможно за один запрос получить данные из 4 таблицы при этом надо количество зависимости от значения (is_read принимает два значение 0 или 1) Т.е количество 0 и 1 отдельно для каждого юзера. Из 4 таблицы примерно должно получится результат
comments.text, users.name, avatars.link, count.
Count - это количество прочитанных(0) и не прочитенных(1) постов.
Все это я решаю через пхп делаю отдельные запросы сравнение массивов и делаю конкатинацию.
Вот что у меня сейчас получается
Отдельно получаю
SELECT * FROM comments;
Получаю количество и имя пользователя с users
select count(is_read), post.user_id, users.name,  FROM post INNER JOIN users ON users.id=post.user_id  WHERE is_read=1 AND color='black' group by user_id

Не могу получить данные с таблицы avatars
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 1
unitby
@unitby
С новыми условиями посмотрите на что-нить типо этого:

select post.user_id, count(*) as c_all, count(if(post.is_read = 0, 1, NULL)) as c_not, count(if(post.is_read = 0, NULL, 1)) as c_read 
from post 
where post.user_id in (...)
group by post.user_id


Первым вашим запросом (SELECT * FROM comments ORDER BY id DESC LIMIT 10) получаете ID юзверей, которые потом засовывайте во второй запрос. во втором получаете счетчики. Нужо только добавить join'ы для доп инфы

При выводе в php комменты выводите как комменты, а когда нуна инфа о юзвере по его айди к массиву из второго запроса обращаетесь.

И лучше не условия меняйте а новый вопрос создавайте, а то глупо получается, отвечаешь на одно, а потом в вопросе совсем другое
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы