On 12/11/07, Joe Wilson <[EMAIL PROTECTED]> wrote: > --- [EMAIL PROTECTED] wrote: > > The current name resolution rules for SQLite are that it > > first tries to resolve names using just the tables in the > > join. If that fails, then it looks at result column aliases. > > I think that approach continues to work on WHERE. But I need > > to reverse the search order on ORDER BY - the column aliases > > need to take precedence over tables in the join. > > Should GROUP BY follow the WHERE resolution rules or the proposed > new ORDER BY rules? > > Given: > > create table t1(a INT, b INT, c INT); > insert into t1 values(1, 2, 4); > insert into t1 values(2, -1000, 5); > > mysql> select a, a+b AS c from t1 group by c, a order by c, a; > +------+------+ > | a | c | > +------+------+ > | 2 | -998 | > | 1 | 3 | > +------+------+ > > postgres=> select a, a+b AS c from t1 group by c, a order by c, a; > ERROR: column "t1.b" must appear in the GROUP BY clause or be used in an > aggregate function >
IBM DB2 9.5 ------------------------------ Commands Entered ------------------------------ select a, a+b AS c from t1 order by c; select a AS foo from t1 union select b from t1 order by foo; select a, a+b AS c from t1 UNION ALL select a AS c, c AS a from t1 order by c; select a, a+b AS c from t1 group by c, a order by c, a; ------------------------------------------------------------------------------ select a, a+b AS c from t1 order by c A C ----------- ----------- 2 -998 1 3 2 record(s) selected. select a AS foo from t1 union select b from t1 order by foo SQL0206N "FOO" is not valid in the context where it is used. SQLSTATE=42703 select a, a+b AS c from t1 UNION ALL select a AS c, c AS a from t1 order by c SQL0206N "C" is not valid in the context where it is used. SQLSTATE=42703 select a, a+b AS c from t1 group by c, a order by c, a SQL0119N An expression starting with "B" specified in a SELECT clause, HAVING clause, or ORDER BY clause is not specified in the GROUP BY clause or it is in a SELECT clause, HAVING clause, or ORDER BY clause with a column function and no GROUP BY clause is specified. SQLSTATE=42803 Robert Wishlaw ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------