Knex: هل من الممكن بناء استعلام انضمام متداخل؟

تم إنشاؤها على ٢١ أبريل ٢٠١٦  ·  3تعليقات  ·  مصدر: knex/knex

مرحبًا ، عمل رائع من فريق 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)

يرجى إعلامي إذا كنت مخطئا في مكان ما؟

question

التعليق الأكثر فائدة

السؤال هو كيفية تداخل استعلامات الانضمام باستخدام knexjs؟ Inner Join متداخل مع Left أو Right JOIN باستخدام knex ، بحيث يمكن لـ knex بناء استعلام SQL كما هو موضح أعلاه في قسم الاستعلام:؟

ال 3 كومينتر

السؤال هو كيفية تداخل استعلامات الانضمام باستخدام knexjs؟ Inner Join متداخل مع Left أو Right JOIN باستخدام knex ، بحيث يمكن لـ knex بناء استعلام SQL كما هو موضح أعلاه في قسم الاستعلام:؟

saurabhghewari هل من أي وقت مضى إيجاد حل لهذا السؤال؟ أحاول أن أفعل شيئًا مشابهًا.

يجب أن أقول إنني لست متأكدًا مما إذا كان knex يدعم الصلات المتداخلة على الإطلاق ... لم أر أي اختبارات أو وثائق لهذه الحالة ، لذلك أنا متأكد من أنها غير مدعومة. الرجاء إضافة طلب ميزة لهذا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات