Knex: 有可能建立嵌套的Join查询吗?

创建于 2016-04-21  ·  3评论  ·  资料来源: knex/knex

嗨,Knexjs团队的出色工作。 我正在通过一个具有多对多关系的小示例尝试通过ORM进行knexjs。 该示例是作者和书籍的示例,其中auhtors表和book表通过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嵌套联接查询? 使用knex将内部联接嵌套到Left或Right JOIN中,以便knex可以构建SQL查询,如上面的Query:部分所示?

所有3条评论

问题是如何使用knexjs嵌套联接查询? 使用knex将内部联接嵌套到Left或Right JOIN中,以便knex可以构建SQL查询,如上面的Query:部分所示?

@saurabhghewari您是否找到这个问题的解决方案? 我正在尝试做类似的事情。

我不得不说我不确定knex是否完全支持嵌套连接...在这种情况下我没有看到任何测试或文档,因此我很确定它们不受支持。 请为此添加功能请求。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mattgrande picture mattgrande  ·  3评论

fsebbah picture fsebbah  ·  3评论

marianomerlo picture marianomerlo  ·  3评论

hyperh picture hyperh  ·  3评论

aj0strow picture aj0strow  ·  3评论