IF rašė: > Pobarabanum WHERE IN(....) ). Taigi as iki siol zinojau kad OR ir IN duomenu > bazes traktuoja kaip skirtingus operatorius, taigi nieko as nevaidinu, bet > nuosirdziai klausiu, nes tikrai nezinau, kokiose Duomenu bazese > TRANSACT-SQL siuos du operatorius suplaka i viena ir kur tai parasyta? Drįsčiau teigti, kad visose. Štai keletas jų: SQLite, where.c: ** CASE 1: ** ** If all subterms are of the form T.C=expr for some single column of C ** a single table T (as shown in example B above) then create a new virtual ** term that is an equivalent IN expression. In other words, if the term ** being analyzed is: ** ** x = expr1 OR expr2 = x OR x = expr3 ** ** then create a new virtual term like this: ** ** x IN (expr1,expr2,expr3) FireBird, sql.cpp (SQL expresssion parser): (IN sąrašo elementai jungiami binariniu OR operatoriumi ir sudaroma OR grandinėlė; tikiuosi nereikia įrodinėti, kad lygiai tokia pati OR grandinėlė susidaro apdorojant OR sąlygas?) static GPRE_NOD par_in( gpre_req* request, GPRE_NOD value) <...> node = MSC_binary(nod_or, node, MSC_binary(nod_eq, value, value2)); PostgreSQL, parse_expr.c: (IN sąrašo elementai jungiami binariniu OR operatoriumi arba binariniu AND operatoriumi, kai/jei tai yra NOT IN() ir tokiu būdu sudaroma OR/AND grandinėlė) static Node * transformAExprOr(ParseState *pstate, A_Expr *a) { <...> return (Node *) makeBoolExpr(OR_EXPR, list_make2(lexpr, rexpr), a->location); static Node * transformAExprIn(ParseState *pstate, A_Expr *a) { <...> result = (Node *) makeBoolExpr(useOr ? OR_EXPR : AND_EXPR, list_make2(result, cmp), a->location); MySQL'e jau giliau, kompleksiškiau įvilkta -- ne taip akivaizdu, tačiau neabejoju, kad gaunama ta pati OR grandinėlė (o techniškai to pačio kompleksiškumo, Big O prasme, uždavinys); gali pasinagrinėti pats.