Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kết hợp hai bảng, sau đó Đặt hàng theo ngày, NHƯNG kết hợp cả hai bảng

Nếu các cột của cả hai bảng giống nhau, bạn có thể sử dụng UNION

SELECT X.*
  FROM ( SELECT `id`,
                `userID`,
                 'INVOICE' AS PTYPE
                 `amount`,
                 `date`
            FROM `invoices`
           WHERE {$userID} = userID  
          UNION
          SELECT `id`,
                 `userID`,
                 'PAYMENT' AS PTYPE
                 `amount`,
                 `date`
            FROM `payments`
           WHERE {$userID} = userID  
        ) X
 ORDER BY X.`date`

CHỈNH SỬA

Đọc phần liên quan của hướng dẫn sử dụng MySQL trên UNIONS. Có nhiều cách khác để diễn đạt điều này, nhưng đây là kiểu ưa thích của tôi - bất kỳ ai đọc cũng phải hiểu rằng mệnh đề ORDER BY áp dụng cho kết quả của cả hai các mặt của CÔNG ĐOÀN. UNION được viết không cẩn thận - ngay cả với ORDER BY - vẫn có thể để lại tập kết quả cuối cùng theo thứ tự không xác định.

Mục đích của PTYPE là truy vấn này trả về một cột bổ sung được gọi là PTYPE, cho biết mỗi hàng riêng lẻ là HÓA ĐƠN hay THANH TOÁN ... tức là. nó đến từ bảng nào. Nó không bắt buộc, nhưng thường có thể hữu ích trong một liên minh



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới hạn kích thước VARCHAR của MySQL

  2. Docker. Hình ảnh MySQL. Không thể thay đổi tệp my.cnf

  3. MySQL so với MariaDB

  4. truy vấn mysqli chỉ trả về hàng đầu tiên

  5. Các giá trị được phân tách bằng dấu phẩy