Данные SQL Fetch из других таблиц - PullRequest
0 голосов
/ 29 октября 2018

У меня есть следующие типы таблиц

1. feeds ( id, user_id, type, object_id)
2. badge ( id, 'badge_name', 'slug' )
3. Post  (id, 'post_name', 'post_type')

Я хочу получить все пользовательские фиды из таблицы фидов на основе типа фидов, то есть если тип фидов - badge, то object_id будет ссылаться на таблицу «badge», а если тип фидов - blog, то object_id будет ссылаться на таблицу «Post». в одном запросе.

Каков наилучший способ добиться этого?

В настоящее время я делаю это с помощью кода и тоже работаю. Просто хочу улучшить его.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы должны использовать left join, но тип значка должен быть частью условий:

select f.*,
       coalesce(b.badge_name, p.post_name) as name,
       coalesce(b.slug, p.post_type) as type
from feeds f left join
     badge b
     on f.object_id = b.id and
        f.type = 'badge' left join
     post p
     on f.object_id = p.id and
        f.type = 'post';
0 голосов
/ 29 октября 2018

использовать левое соединение и coalesce функцию

select f.*,coalesce(b.badge_name,p.post_name),
           coalesce(b.slug,p.post_type)
                    from feeds f
                    left join badge b on f.object_id=b.id
                    left join post p on f.object_id=p.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...