MySQL Получить строку с вложенным индикатором наличия другой строки в другой таблице

183
23 апреля 2022, 13:20

Доброго времени суток!

Мне нужно получить строку "A" из БД и добавить в нее один параметр "like" желательно с bool обозначением есть ли строка по условию из другой таблицы.

Вот я получаю строку "A":

SELECT posts.*, users.nickname, users.avatar 
FROM posts, users 
WHERE posts.type='prose'
 AND posts.status=4 
 AND posts.deleted=0 
 AND users.id = posts.author 
ORDER BY created_at DESC;

Вот получение параметра like :

SELECT * FROM likes WHERE user=? AND post=?;

Этот запрос я хочу добавить к первому и получить его в виде like: 0 или 1 ... либо же строку из бд.

Более наглядный пример : есть таблица posts, user, likes

posts:

user:

likes:

В каждом запросе мне надо объединить posts и user. (Это я делаю в первом запросе где получаю строку "A").

И если есть параметр в likes равный likes.post = posts.id то добавить его... Хотелось бы вообще получать что-то типо bool 0 или 1 в зависимости от того есть ли такие данные в likes.

в итоге я хочу получить ответ такого типа :

{
 /// все параметры из posts
 nickname: ***
 avatar: ***
 like: 1 or 0
}

Буду очень благодарен за помощь!

Answer 1

Формально это будет что-то типа

SELECT posts.*,
       users.*,
       EXISTS ( SELECT NULL
                FROM likes
                WHERE likes.user = posts.author   -- или users.id
                  AND likes.post = posts.id ) like_exists
FROM posts
JOIN users ON users.id = posts.author
WHERE ...
ORDER BY ...
READ ALSO
Mysql foreign key

Mysql foreign key

Есть несколько таблиц: user admin clientЗдесь указываются роли и создаются отдельные аккаунты для них

197
Как изменить текущее время в Mysql?

Как изменить текущее время в Mysql?

База данных Mysql не верно показывает время, получаю командой SELECT NOW();

244
Клиент-сервер, способ обмена обновлениями

Клиент-сервер, способ обмена обновлениями

Подскажите, пожалуйста, правильный вариант реализации клиент-серверного взаимодействия (если это можно таковым назвать)

128
open server или ручная настройка?

open server или ручная настройка?

Здраствуйте подскажите что лучше и в чем разница? Скачать Open Server или скачать все ручно MySQL PHP Apache

271