On 1/5/17, Domingo Alvarez Duarte <mingo...@gmail.com> wrote:
> Hello !
>
> Today I found this unexpected behavior when using sqlite3 trunk:
>
> When using views with joins sqlite3 is choosing expected plans except
> for "LEFT JOIN", bellow is the snippet that shows this unexpected behavior.
>
> ===
>
> create table if not exists a(id integer primary key, val text);
> create table if not exists b(id integer primary key, a_id integer not
> null, val text);
> create view if not exists b_view as select b.*, a.* from b left join a
> on b.a_id=a.id;
> create table if not exists c(id integer primary key, b_id integer not
> null, val text);
>
> select 'bad unexpected plan';
> explain query plan select c.*, b_view.* from c left join b_view on
> c.b_id=b_view.id;

Can you rewrite your query as:

  SELECT *
   FROM c LEFT JOIN b ON c.b_id=b.id
                LEFT JOIN a ON b.id=a.id;
-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to