Hiển thị kết quả từ 1 đến 4 / 4
  1. #1
    Tham gia
    13-03-2011
    Bài viết
    3
    Like
    2
    Thanked 0 Times in 0 Posts

    Giận dữ ! Lấy dữ liệu từ trong tất cả các table có trong Database

    em có 1 database có 100 table trong các table đều có chung 1 column là Name
    bây giờ em muốn lấy dữ liệu trong column Name đó từ tất cả các table có trong database
    em không thể ngồi viết select Name from table1
    ...
    select Name from table100
    rồi lại ghép kết quả từ các câu select đó lại được vì làm như vậy rất tốn time
    em muốn dùng vòng lặp (hoặc câu lệnh gì đó) để lấy ra tất cả Table có trong Database. (1)
    từ (1) lấy ra tất cả các cột trong table. (2)
    từ (2) lấy ra dữ liệu trong cột Name.
    VD:
    Database DB_Demo
    tableA(Id, Name, Address) trong cột Name có: name1, name2, name3.
    tableB(Id, Name, Email) trong cột Name có: name4, name5, name6.
    tableC(Id, Name, Class) trong cột Name có: name7, name8, name9.

    sau khi thực hiện vòng lặp (câu lệnh gì đó) ở trên thì kết quả sẽ là:
    => name1
    name2
    ...
    name8
    name9
    Quote Quote

  2. #2
    Tham gia
    04-03-2016
    Bài viết
    5
    Like
    0
    Thanked 1 Time in 1 Post
    Cái này lâu không dùng nên không nhớ lắm bác nào có kiến thức thì vào gúp chủ topic đi

  3. Thành viên Like bài viết này:


  4. #3
    Tham gia
    28-06-2003
    Location
    HCM
    Bài viết
    721
    Like
    1
    Thanked 14 Times in 14 Posts
    Nếu muốn đơn giản thì viết 100 dòng Select và dùng Union ở giữa 2 dòng Select --> chỉ chạy một lần thôi.
    ví dụ: Select Name from TB1 Union Select Name from TB2 Union.....

  5. #4
    Tham gia
    02-02-2017
    Bài viết
    60
    Like
    56
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi kimniem View Post
    em có 1 database có 100 table trong các table đều có chung 1 column là Name
    bây giờ em muốn lấy dữ liệu trong column Name đó từ tất cả các table có trong database
    em không thể ngồi viết select Name from table1
    ...
    select Name from table100
    rồi lại ghép kết quả từ các câu select đó lại được vì làm như vậy rất tốn time
    em muốn dùng vòng lặp (hoặc câu lệnh gì đó) để lấy ra tất cả Table có trong Database. (1)
    từ (1) lấy ra tất cả các cột trong table. (2)
    từ (2) lấy ra dữ liệu trong cột Name.
    VD:
    Database DB_Demo
    tableA(Id, Name, Address) trong cột Name có: name1, name2, name3.
    tableB(Id, Name, Email) trong cột Name có: name4, name5, name6.
    tableC(Id, Name, Class) trong cột Name có: name7, name8, name9.

    sau khi thực hiện vòng lặp (câu lệnh gì đó) ở trên thì kết quả sẽ là:
    => name1
    name2
    ...
    name8
    name9
    Cái này bạn dùng SQL động bao gồm các bước sau:
    + Tạo 1 bảng tạm để chứa tên các table, đồng thời gán ID cho nó
    SELECT * FROM information_schema.tables WHERE TABLE_TYPE='BASE TABLE'
    + Dùng vòng lặp để duyệt qua từng table
    Dùng biến @tablename để lấy tên table trong bảng tạm trên tương ứng vơi ID min
    cuối dòng lệnh cho ID tăng thêm 1
    Trong vòng lặp này dùng 1 biến @string để thực hiện lấy cột name từ các table
    @string = @string + 'union select name from' + @tablename
    + cuối cùng thì execute @string là ok

Tags for this Thread

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •