Cuối ngày, bộ phận vận hành đối chiếu hai nguồn cho các tài khoản có account_id từ 1 đến 6:
(account_id, symbol) đã từng có giao dịch khớp (từ Trades qua Orders);(account_id, symbol) đang nằm trong Portfolio.Dùng FULL OUTER JOIN để liệt kê mọi cặp xuất hiện ở ít nhất một nguồn, kèm cột recon: 'BOTH' (có ở cả hai), 'TRADED_ONLY' (chỉ có giao dịch, đã không còn trong danh mục), 'HELD_ONLY' (chỉ có trong danh mục, chưa từng giao dịch trong sổ lệnh).
MySQL không có FULL JOIN: dùng LEFT JOIN hợp (UNION/UNION ALL) với phần "chỉ có ở bên phải" của RIGHT JOIN ... WHERE ... IS NULL. Hai cách phải cho cùng kết quả.
Sắp xếp theo account_id, rồi symbol tăng dần.
Trades, Orders, Portfolio.
account_id, symbol, recon; sắp theo account_id, symbol.
Ví dụ:
Đầu vào:
Đầu ra:
1 HPG HELD_ONLY
1 MBS HELD_ONLY
1 PVI HELD_ONLY
1 VCS HELD_ONLY
2 HPG HELD_ONLY
2 IDC BOTH
2 PVI HELD_ONLY
2 PVS BOTH
2 SHS TRADED_ONLY
3 CEO BOTH
3 NVB HELD_ONLY
3 SHS HELD_ONLY
3 VCB HELD_ONLY
4 CEO HELD_ONLY
4 FPT HELD_ONLY
4 IDC HELD_ONLY
5 VNM HELD_ONLY
6 PVS HELD_ONLY
6 VNM HELD_ONLY
Giải thích:
Đang tải editor...