MySQL Forums
Forum List  »  Newbie

Subquery or join
Posted by: Phil Siyam
Date: September 15, 2020 03:45PM

Mysql Version 8
Hi,

Since subquery returns only 1 column, can some please suggest better approach:

Tab main 50,000 rows plus
Columns
key_id, key_desc, Qty
1 KEY1 10
2 KEY2 20

Tab trans1 150,000 rows plus (indexed on key_id)

key_id, key_desc, Qty, user_id, upd_date
1 , KEY1 , 5, 4 , 2020-01-01
1 , KEY1 , 8 , 3 , 2020-02-01
1 , KEY1 , 7 , 3 , 2020-03-01
1 , KEY1, 10 , 1 , 2020-04-01

2 , KEY2 , 8 , 2 , 2020-02-01
2 , KEY2 , 7 , 3 , 2020-05-01
2 , KEY2, 20 , 4 , 2020-10-01


Expected View vm_main
key_id, key_desc, Qty, created_by, created_dt, upd_by, upd_date
1 , KEY1 , 10, 4-name4 , 2020-01-01, 1-name1, 2020-04-01
2 , KEY2 , 20, 2-name2 , 2020-02-01, 4-name4 , 2020-10-01

select m.key_id, m.key_desc, m.Qty
, (select t.upd_date from trans1 t where t.key_id = m.key_id order by t.upd_date Asc limit 1) created_dt
, (select t.upd_by from trans1 t where t.key_id = m.key_id order by t.upd_date Asc limit 1) created_by
, (select t.upd_date from trans1 t where t.key_id = m.key_id order by t.upd_date desc limit 1) upd_dt
, (select t.upd_by from trans1 t where t.key_id = m.key_id order by t.upd_date desc limit 1) upd_by
from main m
-- joining twice with user master table to get names


I am also exploring option of join both table on key_id and then using Row number partitioned by key_id.

Thanks in advance.

Options: ReplyQuote


Subject
Written By
Posted
Subquery or join
September 15, 2020 03:45PM
September 15, 2020 04:21PM
September 17, 2020 03:16PM
September 23, 2020 05:27AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.