Вы можете присоединиться к совокупным запросам. Синтаксис JOIN ... USING
здесь пригодится, поскольку все имена столбцов соединения одинаковы:
SELECT c.member_id, c.firstname, c.lastname, m.balance, p.last_purchase, o.last_purchase
FROM member m
INNER JOIN customer c USING(member_id)
INNER JOIN (
SELECT member_id, max(date) last_purchase FROM purchase GROUP BY member_id
) p USING(member_id)
INNER JOIN (
SELECT member_id, max(date) last_order FROM order GROUP BY member_id
) o USING(member_id)
ORDER BY c.member_id
Важно : в исходном запросе используются неявные соединения old-shool (с запятой в предложение from
) - этот синтаксис потерял популярность более чем 20 лет назад go, и его использование не поощряет, поскольку его труднее писать, читать и понимать.
Одно из многих преимуществ использование явных объединений заключается в том, что вы можете легко изменить INNER JOIN
s на LEFT JOIN
s, если есть вероятность, что у участника нет покупки или нет заказа вообще.