Hai, Kerja bagus tim Knexjs. Saya mencoba knexjs melalui ORM dengan satu contoh kecil yang memiliki hubungan banyak ke banyak. Contohnya adalah Penulis dan Buku dimana tabel auhtor dan tabel buku memiliki hubungan banyak ke banyak melalui tabel author_books. Saya ingin mendapatkan buku tertentu dengan semua penulis. Di bawah ini adalah kueri mentah yang memberikan hasil yang diharapkan. Tetapi saya tidak mendapatkan cara membuat kueri ini menggunakan Knexjs? Bantuan apa pun akan dihargai.
Catatan: Saya menggunakan Knexjs dengan javascript ES6.
SELECT `book`.`id` , `book`.`title` , `authors`.`id` AS `authors.id` , `authors`.`name`
AS `authors.authorname` , `authors.author_books`.`book_id`
AS `authors.author_books.bookId` , `authors.author_books`.`author_id`
AS `authors.author_books.author_id`
FROM `books` AS `book`
LEFT OUTER JOIN (
`author_books` AS `authors.author_books`
INNER JOIN `authors` AS `authors` ON `authors`.`id` = `authors.author_books`.`author_id`
) ON `book`.`id` = `authors.author_books`.`book_id`
WHERE `book`.`id` =1
ini adalah kueri yang saya coba buat menggunakan Knexjs.
this.Knex('books as book')
.leftOuterJoin('author_books as authors.author_books', function(){
// How could I nest INNER JOIN in LEFT OUTER JOIN
this.on('book.id', 'authors.author_books.book_id')
}).select('book.id', 'book.title', 'authors.id as authors.id'
, 'authors.name as authors.name', 'authors.author_books.book_id as authors.author_books.book_id'
, 'authors.author_books.author_id as authors.auhtor_books.author_id')
.where('book.id', id)
Tolong beritahu saya jika saya salah di suatu tempat?
Pertanyaannya adalah bagaimana cara membuat kueri gabungan bersarang menggunakan knexjs? Inner Join bersarang dengan Left atau Right JOIN menggunakan knex, sehingga knex dapat membangun query SQL seperti yang ditunjukkan di atas pada Query: section?
@saurabhghewari apakah Anda pernah menemukan solusi untuk pertanyaan ini? Saya mencoba melakukan sesuatu yang serupa.
Saya harus mengatakan saya tidak yakin apakah knex mendukung gabungan bersarang sama sekali ... Saya tidak melihat tes atau dokumentasi untuk kasus itu, jadi saya cukup yakin mereka tidak didukung. Silakan tambahkan permintaan fitur untuk ini.
Komentar yang paling membantu
Pertanyaannya adalah bagaimana cara membuat kueri gabungan bersarang menggunakan knexjs? Inner Join bersarang dengan Left atau Right JOIN menggunakan knex, sehingga knex dapat membangun query SQL seperti yang ditunjukkan di atas pada Query: section?