On Tue, 12 Mar 2013 19:57:26 +0000 Simon Slavin <slav...@bigfraud.org> wrote:
> > Is my rewrite the same as the original? > > No. You can't use this construction: > > > INNER JOIN (Categories INNER JOIN Object_Categories ON > > "Categories"."Category_ID"="Object_Categories"."Category_ID") > > The parser expects a table name immediately after INNER JOIN. > Instead you are opening a bracket which is the way one would begin an > expression. That construction is perfectly valid except for one detail that Hugh Darwen calls the TEETH_GNASHER. sqlite> .tables sqlite> create table t (t int primary key); sqlite> insert into t values (1); sqlite> insert into t values (2); sqlite> insert into t values (3); sqlite> select * from t inner join (select min(t) from t) as T; t min(t) ---------- ---------- 1 1 2 1 3 1 The table expression requires a name, even if the name isn't referenced elsewhere in the query. Of course, to get a correct result, the above query needs a few corrections: sqlite> select * from t as a join (select min(t) as t from t) as T on a.t = T.t; t t ---------- ---------- 1 1 --jkl _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users