2016-10-27 37 views
-1

所以,我使用sequelize和一個mysql實例,並且我有這樣的層次結構:任務有n個圖像,還有n個元數據鍵值對。 我想根據userId任務列獲取所有圖像,然後根據日期將它們按'createdAt'列分組,因爲正常的groupby將是毫無意義的(沒有對象共享相同的日期時間)。我做了很多測試來嘗試分組,並且我最終使用了這個查詢,這給出了不好的結果(我有一個任務像11個圖像,並且它檢索到4個)。老實說,我不知道我做錯了什麼。你們中的任何人有什麼想法? 這是代碼片段:通過父屬性找到的天對象對查詢組進行按序排列

var userId = security.utils.getKeycloakSubject(req); 
var where = { 
    userId: userId 
}; 
db.image.findAll({ 
    include: [{ 
     model: db.task, 
     include: [{ 
      model: db.metadata, 
      as: 'metadata' 
     }], 
     where: where 
    }], 
    group: [db.Sequelize.fn('DAY', db.Sequelize.col('image.createdAt'))] 
}).then(function (images) { 
    return res.json(images); 
}, function (error) { 
    return res.status(500).json(error); 
}) 

回答

0

我看到了你的問題,也發現了這個:Sequelize grouping by date, disregarding hours/minutes/seconds 這是一個關於組問題DAY(createdAt),看起來與你相似。

而且我BY DAY(GROUP的解決方案)是這樣的:

item.findAll({ 
     attributes: 
     [[sequelize.fn('DATE_FORMAT', sequelize.col('TimeStamp'), '%H'), 'dates']], 
     group: [sequelize.fn('DAY', sequelize.col('TimeStamp'))] 
     }). 
     then(function(result){console.log(result) 
     }). 
     catch(function(error){}).catch(function(error) { 
      console.log(error); 
     }); 

所以原始SQL喜歡:SELECT DATE_FORMAT('TimeStamp', '%H') as 'dates' FROM tableName GROUP BY DAY('TimeStamp');

希望它可以幫助你,或者你能告訴我們你想要的SQL語句使用,也許它也更容易幫助你。

祝你好運。

相關問題