MySQL Таблица объединения групп - PullRequest
0 голосов
/ 15 января 2020

У меня ниже трех SQL заявление, и я хочу выбрать, как показано ниже, я пытался, но не удалось.

Нужна помощь.

Вывод:

member_id, balance, firstname, lastname, LastPurchase, LastOrde


SELECT c.member_id
     , c.firstname
     , c.lastname
     , m.balance 
  FROM member m
     , customer c
 where  m.member_id =  c.member_id
 order 
    by m.member_id


SELECT member_id, max(date) as LastPurchase 
  FROM purchase
 GROUP 
    BY member_id

SELECT member_id, max(date) as LastOrder   
  FROM ordert
 GROUP 
    BY member_id

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Вы можете присоединиться к этим заявлениям -

SELECT c.member_id, c.firstname, c.lastname, m.balance, p.LastPurchase, o.LastOrder   
FROM member m
join customer c on m.member_id =  c.member_id
left join (SELECT member_id, max(date) as LastPurchase 
      FROM purchase
      GROUP BY member_id) p on p.member_id = m.member_id
left join (SELECT member_id, max(date) as LastOrder   
      FROM ordert
      GROUP BY member_id) o on o.member_id = m.member_id
order by m.member_id
1 голос
/ 15 января 2020

Вы можете присоединиться к совокупным запросам. Синтаксис 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, если есть вероятность, что у участника нет покупки или нет заказа вообще.

...