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';