01/10/2018, 00:53

Vấn đề khó cần người tư vấn và đóng góp ý kiến

Mình gặp một vấn đề về từ lấy dữ liệu tới việc hiển thị dữ liệu:

Client: Họ yêu cầu hiển thị dữ liệu được sắp xếp theo thời gian. Vấn đề 1 bảng dữ liệu thì sẽ không có gì khó khăn. Vấn đề nó có thể nằm ở 3 bảng dữ liệu khác nhau, hiển thị thành các div khác nhau tùy vào cấu trúc data đó.
Ví dụ: 

A có date = a, cấu trúc dữ liệu là A
B có date = b, cấu trúc dữ liệu là B
C có date = c, cấu trúc dữ liệu là C

Hiển thị theo thứ tự thời gian a>b>c. Các hiển thị data và lấy data nó từ 3 bảng khác nhau trong db, List chứa dữ liệu của nó sẽ như thế nào A/E nào cho e xin cao kiến ạ?

Nguyen Ca viết 03:06 ngày 01/10/2018

Trả về thêm 1 field để xác đính data đó lấy từ table nào

Itachi Citus viết 03:04 ngày 01/10/2018
SELECT t.id, t.table_name, t.date
FROM  (
Select id, 'A' as table_name, date
FROM A
UNION
Select id, 'B' as table_name, date
FROM B
UNION
Select id, 'C' as table_name, date
FROM C
)
Order by date
LIMIT 100

Có lẽ vậy, không chắc đúng cú pháp, không chắc chạy được . với mỗi thằng thì chắc lại cần 1 lệnh select riêng sau khi đã có list id

Tạ Duy Hoàng viết 03:05 ngày 01/10/2018

bạn có thể nói rõ hơn câu trả lời của bạn được không? Mình đẩy nó vào đối tượng như nào, rồi sau khi lên view mình nhận nó thế nào ạ?

Tạ Duy Hoàng viết 02:55 ngày 01/10/2018

Cảm ơn bạn cho mình ý tưởng. Mình hiểu ý tưởng của bạn là select những thằng này ra một bảng mới.
3 bảng này đều extend từ một thằng chứa thông tin id và date này thì bạn có thể nói được rõ hơn không?

Nguyen Ca viết 03:08 ngày 01/10/2018

Có nghĩa là khi select dữ liệu từ db lên, cần có thêm 1 cột để xác định nó được lấy từ table nào, Itachi đã hướng dẫn đó, xử lý order dưới db luôn.
Về cấu trúc có thể làm như thế này:

Class A {
   //field table A
  ....
  //field table B
  ....
 // field table C
 ....
 1 field xác đinh record hiện tại thuộc table nao
}
List<Class A> rs = new ArrayList<Class A>()

Dựa trên query mà đẩy data vào field table tương ứng ,dĩ nhiên với cấu trúc này, tại dòng bất kì các field của 2 table khác sẽ null, nhưng làm trước đã, tối ưu sau.

Tạ Duy Hoàng viết 03:09 ngày 01/10/2018

OK đúng ý mình hiểu. Để mình thử làm xem ok không. Cám ơn anh/em nhé

Bài liên quan
0