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

Permintaan gabungan MySQL, pesan dengan 2 variabel

Yang benar-benar perlu Anda lakukan adalah mempertimbangkan skema Anda dengan lebih hati-hati. Pertimbangkan untuk memberi nama kolom tanggal waktu yang sama dan kemudian menjalankan kueri seperti ini - http:// /sqlfiddle.com/#!2/a3b4c/7/0

SELECT selection, id, datetimefoo, user FROM (
  SELECT 
    1 AS selection, 
    table1.id, table1.datetimefoo, 
    table3.user 
    FROM table1 
    LEFT OUTER JOIN table2 
    ON table1.id = table2.table1id
    LEFT OUTER JOIN table3
    ON table1.id = table3.id


  UNION

  SELECT 
    2 AS selection, 
    table1.id, table1.datetimefoo, 
    table3.user 
    FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.table1id
    INNER JOIN table3
    ON table1.id = table3.id

  ) AS T2
ORDER BY datetimefoo DESC

Dalam biola SQL ini menghasilkan hasil yang lebih dekat dengan apa yang Anda cari. Saya masih tidak yakin mengapa Anda memerlukan INNER JOINS pada kueri kedua - tidak ada yang Anda lakukan di sini yang memerlukannya.

Berikut adalah metode lain yang tidak memerlukan perubahan nama kolom, tetapi memerlukan alias untuk kolom yang dapat diurutkan - http://sqlfiddle.com/#!2/ec4bc/3/0

SELECT * FROM (
  SELECT 
    1 AS selection, 
    table1.id, table1.datetimefoo AS sort_date, -- alias on first table's date
    table2.datetimebar,
    table3.user 
    FROM table1 
    LEFT OUTER JOIN table2 
    ON table1.id = table2.table1id
    LEFT OUTER JOIN table3
    ON table1.id = table3.id


  UNION

  SELECT 
    2 AS selection, 
    table1.id, table1.datetimefoo,
    table2.datetimebar AS sort_date, -- alias on second table's date
    table3.user 
    FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.table1id
    INNER JOIN table3
    ON table1.id = table3.id

  ) AS T2
ORDER BY sort_date DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan waktu antara Tanggal dan Waktu saat ini?

  2. Akses Database PDO WHERE title =$title

  3. Laravel Eloquent query build pilih nilai min

  4. Fungsi MySQL ACOS() – Mengembalikan Arc Cosinus dari Angka

  5. Gunakan parameter prosedur tersimpan untuk parameter unit DATE_SUB