MYSQL - Союз SELECT & GROUP BY Не работает

У меня есть 3 таблицы, журнал, член, а также гость, но мой журнал я сохранил только как идентификатор клиента (пользователя), который является их guest_id или member_id. Так вот в чем проблема, потому что они из другой таблицы, я не уверен, как объединить и сгруппировать их данные.

таблица checkout_log

id        user_id      checkout_as
--------------------------------------
1         1            member
2         2            guest

таблица участников

id        fullname
--------------------------------------
1         member01
2         member02

стол гостей

id        fullname
--------------------------------------
1         guest01
2         guest02

Чего я хотел достичь - Результат

id        user_id     fullname     checkout_as
----------------------------------------------
1         1           member01     member
2         2           guest02      guest




Попробовал следующий SQL-оператор с UNION ALL или GROUP BY, но безуспешно.

SELECT * FROM
(
SELECT checkout_log.id,checkout_log.user_id,guests.fullname,guests.email,checkout_log.checkout_as
FROM checkout_log
LEFT JOIN checkout_product ON checkout_product.checkout_log_id = checkout_log.id
LEFT JOIN guests ON checkout_log.user_id = guests.id

UNION ALL

SELECT checkout_log.id,checkout_log.user_id,members.fullname,members.email,checkout_log.checkout_as
FROM checkout_log
LEFT JOIN checkout_product ON checkout_product.checkout_log_id = checkout_log.id
LEFT JOIN members ON checkout_log.user_id = members.id
) derivedTable
GROUP BY id

1 ответ

Решение

Попробуйте сделать это с объединениями вместо объединения

select cl.id, cl.user_id,
       coalesce(m.fullname, g.fullname) as fullname,
       cl.checkout_as
from checkout_log cl left join
     members m
     on cl.user_id = m.id and cl.checkout_as = 'member' left join
     guests g
     on cl.user_id = g.id and cl.checkout_as = 'guest';
Другие вопросы по тегам