自行对联接表进行排序

时间:2018-08-16 17:00:10

标签: node.js orm sequelize.js graphql

因此,我试图避免只用替换项进行查询,但基本上,我要结束的查询看起来像这样:

select *
from "sharedGameData" sg
left outer join endgame eg1 on eg1.game_id = sg.gameid and eg1.playerid = '8E179150DC1414CD'
inner join endgame eg2 on eg2.game_id = eg1.game_id

ORDER BY sg."ts" DESC NULLS LAST

基本上,我有一个sharedGameData对象,其中包含共享信息。但是,每个游戏都有4个子行(endgame表)。我想找到所有基于玩家编号(有或没有限制)的游戏。

使用上面的查询几乎立即返回。

我可以无限制地运行查询,但是如果添加限制,则会因以下错误而中断:

  

缺少表“ endgames”的FROM子句条目。

关于如何解决此错误的任何想法?

 var includeObj = []
          if (args.includeGameDetails) {
            includeObj = [
              {
                model: db.sequelize.models.endgame,
                as: 'endgames',
                required: false,
                attributes: {},
                where: { playerid: root.id }
              },
              {
                model: db.sequelize.models.endgame,
                required: true,
                as: 'endgames2',
                where: { game_id: { $col: 'endgames.game_id' } }
              }
            ]
          }

          //console.log(whereStatment)
          return db.sequelize.models.sharedGameData
            .findAndCountAll({
              where: whereStatment,
              limit: args.limit,
              offset: args.offset,

              order: [
                [
                  args.orderby ? args.orderby : 'ts',
                  args.direction ? args.direction : 'DESC NULLS LAST'
                ]
              ],
              include: includeObj
            })
            .then(result => {
              //  console.log(result)
              //  console.log(result.count)
              console.log(result.rows)

              return {
                games: result.rows,
                count: result.count
              }
            })

0 个答案:

没有答案