مرحبًا ، عمل رائع من فريق Knexjs. أحاول استخدام knexjs عبر ORM مع مثال صغير واحد يحتوي على العديد من العلاقات. المثال هو المؤلفون والكتب حيث يكون لجدول auhtors وجدول الكتاب علاقة كثيرة بالعديد من خلال جدول author_books. أريد الحصول على كتاب معين مع جميع المؤلفين. يوجد أدناه استعلام خام يعطي النتيجة المتوقعة. لكنني لا أحصل على كيفية إنشاء هذا الاستعلام باستخدام Knexjs؟ سيكون موضع تقدير أي مساعدة.
ملاحظة: أنا أستخدم Knexjs مع 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
هذا هو الاستعلام الذي أحاول إنشائه باستخدام 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)
يرجى إعلامي إذا كنت مخطئا في مكان ما؟
السؤال هو كيفية تداخل استعلامات الانضمام باستخدام knexjs؟ Inner Join متداخل مع Left أو Right JOIN باستخدام knex ، بحيث يمكن لـ knex بناء استعلام SQL كما هو موضح أعلاه في قسم الاستعلام:؟
saurabhghewari هل من أي وقت مضى إيجاد حل لهذا السؤال؟ أحاول أن أفعل شيئًا مشابهًا.
يجب أن أقول إنني لست متأكدًا مما إذا كان knex يدعم الصلات المتداخلة على الإطلاق ... لم أر أي اختبارات أو وثائق لهذه الحالة ، لذلك أنا متأكد من أنها غير مدعومة. الرجاء إضافة طلب ميزة لهذا.
التعليق الأكثر فائدة
السؤال هو كيفية تداخل استعلامات الانضمام باستخدام knexjs؟ Inner Join متداخل مع Left أو Right JOIN باستخدام knex ، بحيث يمكن لـ knex بناء استعلام SQL كما هو موضح أعلاه في قسم الاستعلام:؟