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

Bagaimana cara menggunakan gabungan penuh luar di laravel 5.0?

Saya tidak tahu persis apa yang ingin dicapai oleh kueri Anda, dan di mana Anda memerlukan gabungan luar penuh, tetapi saya akan memulai jawaban ini dengan mengatakan bahwa MySQL tidak memiliki dukungan bawaan untuk gabungan luar penuh. Berdasarkan pertanyaan SO ini , kita dapat menemukan cara alternatif untuk menulis query berikut:

SELECT * FROM t1
FULL OUTER JOIN t2
    ON t1.id = t2.id

Ini dapat ditulis ulang sebagai UNION dari gabungan kiri dan gabungan kanan:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

Di Laravel, kita dapat menulis kode berikut untuk mewakili gabungan luar penuh di atas:

$second = DB::table('t2')
             ->rightJoin('t1', 't1.id', '=', 't2.id')

$first = DB::table('t1')
            ->leftJoin('t2', 't1.id', '=', 't2.id')
            ->unionAll($first)
            ->get();

Sekali lagi, saya tidak tahu mengapa menurut Anda Anda memerlukan dua gabungan luar, tetapi terlepas dari itu, Anda harus dapat mengadaptasi kode dan kueri di atas dan menggunakannya untuk situasi Anda.

Referensi:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan data dari tabel lain menggunakan data kolom dari tabel yang berbeda?

  2. PostgreSQL vs. MySQL

  3. Tidak dapat menginstal permata mysql2 di macOS Sierra

  4. #1071 - Kunci yang ditentukan terlalu panjang; panjang kunci maksimal adalah 1000 byte

  5. tabel magento sales_flat_order bidang protect_code penjelasan