【问题标题】:How to convert a query on Bookshelf.js ( alias table )如何转换 Bookshelf.js 上的查询(别名表)
【发布时间】:2014-07-31 07:03:45
【问题描述】:

我有一个复杂的查询:

 SELECT *
FROM   `relations` L1
WHERE `minor_from` = 2 and `major_from` = 2  and `type` = "friend" 
       AND  EXISTS
  (

       SELECT * FROM   `relations` L2 WHERE  
       (L1.`minor_from` = L2.`minor_to` AND L1.`major_from` = L2.`major_to` and L1.`minor_from` = L2.`minor_to` AND L1.`major_from` = L2.`major_to`) AND 
       (L2.`minor_from` = L1.`minor_to` AND L2.`major_from` = L1.`major_to` and L2.`minor_from` = L1.`minor_to` AND L2.`major_from` = L1.`major_to`)
)

这给了用户的朋友。

我可以在 Bookshelf.js 中添加 whereRaw 但无法添加别名 L1 SELECT * FROM relations L1

知道如何查询。

编辑:

如果有人能告诉我如何运行完整的原始查询,将会很有帮助。

【问题讨论】:

    标签: javascript mysql node.js bookshelf.js knex.js


    【解决方案1】:

    将其标记为答案:

    我使用 knex.js 来做到这一点。我可以并且可能会使用 knex 方法,但为了测试我有这个:

        knex('relations as L1').where('L1.minor_from', '=',req.body.minor ).where('L1.major_from', '=',req.body.major).where('L1.type', '=', 'friend').whereExists(function() {
                            this.select('*').from('relations as L2').whereRaw(' (L1.`minor_from` = L2.`minor_to` AND L1.`major_from` = L2.`major_to` and L1.`minor_from` = L2.`minor_to` AND L1.`major_from` = L2.`major_to`) AND (L2.`minor_from` = L1.`minor_to` AND L2.`major_from` = L1.`major_to` and L2.`minor_from` = L1.`minor_to` AND L2.`major_from` = L1.`major_to`)');
                    }).then(function(collection) { res.json(200, collection);});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多