@MarkLb

Как получить только те записи, у которых есть связанная запись в другой таблице?

Есть такая структура платежей:
pnM8iG1.png

Хочу получить только те записи из таблицы `payment`, у которых есть связанная запись в `payment_deposit`.

Мой ActiveRecord, на основе введенных мною параметров, сгенерировал такой запрос:
SELECT `payment`.* 
FROM `payment` 
LEFT JOIN `payment_deposit` ON `payment`.`id` = `payment_deposit`.`user_id` 
WHERE `user_id` IS NOT NULL 
ORDER BY `id` DESC 
LIMIT 20


Почему-то в результате - 4 раза выведена запись под ID №4...
c6DCQUU.png

...вместо записей №7, 10, 11:
kMN03kB.png

Что я делаю не так?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
SELECT `payment`.* 
FROM `payment` 
WHERE EXISTS (
    SELECT 1 FROM  `payment_deposit` WHERE  `payment`.`id` = `payment_deposit`.`payment_id` 
)
ORDER BY `id` DESC 
LIMIT 20
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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