Làm sao để loại bỏ trùng lặp khi tạo csv file từ nhiều DB trong PHP?

Mình lấy data từ nhiều DB bằng vòng lặp while và ghi vào CSV.
Code ex:

while ($r = $stmt->fetch()){
       if ($j == 0) {
              $csvTxt .= array_keys($r);
       }
       $csvTxt .= array_values($r);
       $j++;
}

Mỗi khi lấy data từ 1 DB thì cái array_keys lại bị lặp lại (keys của các DB giống nhau).
Làm sao để chỉ lấy 1 dòng key duy nhất và không bị lặp lại khi lấy dữ liệu của DB khác ạ.

Cái quan trọng nhất là câu lệnh SQL thì không show lên, đi hỏi cái râu ria. Đọc lại tài liệu SQL dành cho MySQL, chương SELECT DISTINCT.

Do em không nói rõ. Bảng trong DB có 4 cột amid, name, email, phone.
Khi ghi vào CSV thì cái tên cột (amid, name, email,…) bị lặp lại mỗi khi lấy dữ liệu từ 1 DB khác như code ở trên.

image

Sau khi code xong thì có yêu cầu là chỉ lấy 1 hàng amid, name, email, phone ở trên cùng thôi, các DB sau chỉ lấy dữ liệu (do tên cột của các DB giống nhau).
Trường hợp này DISTINCT không xử lý được ạ.

Nếu nhiều database có table giống nhau thì fixed cứng luôn một dòng nhập tay các tên cột trong file CSV rồi chỉ lấy dữ liệu ra chèn vào.

Hơn nữa, trình bày nghe rối mù: tên cột table CSDL đâu có dùng câu lệnh select bình thường với dữ liệu mà lấy ra được. Nghĩa là làm gì có chuyện lấy được tên cột như là giá trị :smiley: , mà tên cột đã có trong câu SQL rồi, trùng là trùng sao -> tối nghĩa.

Còn nếu cần bỏ qua dòng đầu tiên thì khi kết quả query trả về ta bỏ qua kết quả đầu tiên, từ kết quả thứ 2 trở đi mà thôi, cái này quá căn bản, lăn tăn cái gì nhỉ? Đơn giản nó là mảng thì ta có thể chạy từ 1 trở đi, hoặc remove phần tử 0 ra khỏi mảng trươc khi lấy dữ liệu.

Còn chuyện không xử lý được là có trùng hay không mà đọc lại file CSV để tra trùng thì càng tào lao vì CSDL lúc này dùng để làm gì?

Cho nên, túm lại là cần phải nâng cao kỹ năng về CSDL hoặc kỹ năng viết mã PHP chứ yếu cả 2 thế này, trình bày nghe rất mù mờ với chính bản thân, người khác nghe cũng không hình dung đang nói gì, sao mà xử lý được?

Cách của mình trong trường hợp này là đọc CSDL từ các bảng khác nhau và INSERT INTO … WHERE NOT EXISTS vào một bảng dài để mỗi kết quả là duy nhất, sau đó mới dump cái bảng này ra CSV và không dại dùng PHP vì quá chậm, gõ lệnh SQL trên console mysql nó dump ra nhanh hơn dùng PHP và khó bị timeout.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?