Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bergabunglah dengan dua tabel, lalu Pesan Berdasarkan tanggal, TAPI gabungkan kedua tabel

Jika kolom kedua tabel sama, Anda dapat menggunakan 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`

EDIT

Baca bagian yang relevan dari manual MySQL pada UNION. Ada cara lain untuk mengungkapkan ini, tetapi ini adalah gaya pilihan saya - harus jelas bagi siapa pun yang membaca bahwa klausa ORDER BY berlaku untuk hasil keduanya sisi UNI. UNION yang ditulis sembarangan - bahkan dengan ORDER BY - mungkin masih meninggalkan hasil akhir dalam urutan yang tidak pasti.

Tujuan PTYPE adalah bahwa kueri ini mengembalikan kolom tambahan yang disebut PTYPE, yang menunjukkan apakah setiap baris individu adalah INVOICE atau PEMBAYARAN... yaitu. yang dari dua tabel itu berasal. Ini tidak wajib, tetapi sering kali berguna dalam serikat



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kueri SQL 'teman dari teman'

  2. PDO::bindParam dalam loop foreach, semua nilai disetel sama?

  3. Doctrine 2 fungsi mysql FIELD diurutkan berdasarkan

  4. Optimalkan permintaan UPDATE MySQL yang berisi WHERE dan ORDER BY?

  5. SQL:Mengembalikan nilai paling umum untuk setiap orang