Как вложить тогда операторы if с операторами select, включая другие операторы if then?

Вы можете сделать это, используя конвейер агрегации, но это боль, чтобы написать его самостоятельно.

Вы можете использовать mongo-join-query , чтобы автоматически создать конвейер агрегации из вашего запроса.

Так будет выглядеть ваш запрос:

const mongoose = require("mongoose");
const joinQuery = require("mongo-join-query");

joinQuery(
    mongoose.models.Comment,
    {
        find: { pid:444 },
        populate: ["uid"]
    },
    (err, res) => (err ? console.log("Error:", err) : console.log("Success:", res.results))
);

Ваш результат будет иметь пользовательский объект в поле uid, и вы можете связать столько уровней, сколько хотите. Вы можете заполнить ссылку на пользователя, которая ссылается на команду, которая ссылается на что-то еще и т. Д.

Отказ от ответственности: я написал mongo-join-query для решения этой точной проблемы.

0
задан Andrey Nikolov 17 January 2019 в 15:12
поделиться

2 ответа

 SELECT IIF(CalculationMethod = x and Price * coefficient < Amount, Amount, Price * coefficient) as CalculatedAmount 
      FROM aTable
0
ответ дан Cato 17 January 2019 в 15:12
поделиться

Если у вас есть сценарий типа IF ... THEN ... ELSE, я думаю, что правильным направлением было бы использование оператора CASE, например:

SELECT CASE WHEN CalculationMethod = x AND ((Price * coefficient) < Amount) THEN Amount
        ELSE (Price * coefficient) END CalculatedAmount

Вы можете прочитать об этом здесь: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql?view=sql-server-2017

An Предложение IIF работает очень хорошо, когда существует только одна ветвь принятия решений, но если вам нужно выбрать несколько вещей из оператора CASE, это путь.

0
ответ дан JM_ 17 January 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: