Вложенный и / или выражение в дозвуковой 2.2 - PullRequest
2 голосов
/ 01 июля 2011

Мне нужно сделать запрос вроде:

SELECT * from TABLE
    WHERE cola= "aaa"
        and
        (
            (colb = "bbb" and (colc="ccc" or colc = "ddd"))
            or
            (colb="eee" and colc = "fff")
        )

Я пытался с Andexpression(), orexpression(), openexpression() или closeexpression(), но я не могу понять это! Любая помощь будет оценена!

1 Ответ

1 голос
/ 02 июля 2011

WhereExpression, AndExpression и т. Д. Должны работать (см. Также этот вопрос ), но это не работает для меня все время, ни.

Поскольку ваши предложения Where относительно просты, вы можете добавить некоторое повторение и использовать приоритет логического оператора :

SELECT * from TABLE
    WHERE cola="aaa" AND colb="bbb" AND colc="ccc"
          OR
          cola="aaa" AND colb="bbb" AND colc="ddd"
          OR
          cola="aaa" AND colb="eee" AND colc="fff"

Это приведет к чему-то вроде этого:

DB.Select().From<TABLE>()
    .Where(TABLE.colaColumn).isEqualTo("aaa")
        .And(TABLE.colbColumn).isEqualTo("bbb")
        .And(TABLE.colcColumn).isEqualTo("ccc")
    .Or(TABLE.colaColumn).isEqualTo("aaa")
        .And(TABLE.colbColumn).isEqualTo("bbb")
        .And(TABLE.colcColumn).isEqualTo("ddd")
    .Or(TABLE.colaColumn).isEqualTo("aaa")
        .And(TABLE.colbColumn).isEqualTo("eee")
        .And(TABLE.colcColumn).isEqualTo("fff")
...