簡體   English   中英

將 SQL 查詢轉換為 SEQUELIZE

[英]Converting a SQL query to SEQUELIZE

我正試圖圍繞創建這個續集查詢。

SELECT 
    dayofweek(datum) AS DOW, 
    concat(DAY(datum), '-', MONTH(datum)) AS datum, 
    ochtend, 
    middag, 
    avond 
FROM dbt.menus
    ORDER BY datum ASC LIMIT 5 OFFSET (variable in sequelize code);

我已經能夠創建 2 個單獨的查詢,其中“按過濾器排序”有效,“別名”有效,但未合並。

這就是我目前在續集中所擁有的

const amount = await Menu.count();
const listOfMenu = await Menu.findAll({ 
    order: [['datum', 'ASC']],
    offset: amount - 5,
    limit: 5,
    attributes: {
        include: [
            [
              Menu.sequelize.fn
              (
                "DATE_FORMAT", 
                Menu.sequelize.col("datum"), 
                "%d-%m "
              ),
              "datum",
            ],
          ]
     }
});

您只需要使用fn兩次: orderattributes選項:

const datumExpression = Menu.sequelize.fn
              (
                "DATE_FORMAT", 
                Menu.sequelize.col("datum"), 
                "%d-%m "
              )
const listOfMenu = await Menu.findAll({ 
    order: [[datumExpression, 'ASC']],
    offset: amount - 5,
    limit: 5,
    attributes: {
        include: [
            [
              datumExpression,
              "datum",
            ],
          ]
     }
});

您還可以將findAllcount查詢合並到一個findAndCountAll ,您將獲得帶有兩個 props 的結果: rowscount

const { rows: listOfMenu, count: amount } = await Menu.findAndCountAll({ 
    order: [[datumExpression, 'ASC']],
    offset: amount - 5,
    limit: 5,
    attributes: {
        include: [
            [
              datumExpression,
              "datum",
            ],
          ]
     }

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM