I think I know what the problem is. SQLite doesn't like having a table
name following an openint parenthesis "(" in the FROM clause. Try the
following statements instead:

SELECT main.id, prim.primname, sec.secname
FROM 
        main
        INNER JOIN
            sec
        ON
            main.secid = sec.secid
    INNER JOIN
    prim
    ON
    main.primid = prim.primid;

Or

SELECT main.id, prim.primname, sec.secname
FROM 
    sec
    INNER JOIN
        main 
        INNER JOIN 
        prim
        ON 
        prim.primid = main.primid
    ON sec.secid = main.secid;


Simon B.



On Tue, 2004-03-09 at 07:52, Guillermo Fernandez Castellanos wrote:

> Hi,
> 
> I've had problems with inner join transactions.
> 
> Here is what I do:
> 
> I create the tables:
> sqlite> create table main (
>     ...> id integer primary key,
>     ...> primid int(10),
>     ...> secid int(10)
>     ...> );
> sqlite>
> sqlite> create table prim (
>     ...> primid integer primary key,
>     ...> primname varchar(10)
>     ...> );
> sqlite>
> sqlite> create table sec (
>     ...> secid integer primary key,
>     ...> secname varchar(10)
>     ...> );
> 
> I populate the tables:
> sqlite> insert into prim(primid,primname) values (null,'prim1');
> sqlite> insert into prim(primid,primname) values (null,'prim2');
> sqlite> insert into prim(primid,primname) values (null,'prim3');
> sqlite>
> sqlite> insert into sec(secid,secname) values (null,'sec1');
> sqlite> insert into sec(secid,secname) values (null,'sec2');
> sqlite> insert into sec(secid,secname) values (null,'sec3');
> sqlite>
> sqlite> insert into main(id,primid,secid) values (null,1,1);
> sqlite> insert into main(id,primid,secid) values (null,2,2);
> sqlite> insert into main(id,primid,secid) values (null,3,3);
> 
> I check the integrity of my tables:
> sqlite> select * from main;
> 1|1|1
> 2|2|2
> 3|3|3
> sqlite> select * from prim;
> 1|prim1
> 2|prim2
> 3|prim3
> sqlite> select * from sec;
> 1|sec1
> 2|sec2
> 3|sec3
> 
> I do a simple inner join to check that it is supported by sqlite:
> sqlite> select main.id,prim.primname from main inner join prim on
> main.primid=prim.primid;
> 1|prim1
> 2|prim2
> 3|prim3
> 
> I then try a more complicated inner join:
> sqlite> select main.id,prim.primname,sec.secname from (main inner join sec on
> main.secid=sec.secid) inner join prim on main.primid=prim.primid;
> SQL error: near "main": syntax error
> sqlite>
> sqlite> select main.id,prim.primname,sec.secname from sec inner join (main 
> inner join prim on prim.primid=main.primid) on sec.secid=main.secid;
> SQL error: near "main": syntax error
> sqlite>
> 
> Why does it not work?
> 
> Can this be considered as a nested transaction?
> If it's the case, how could I do something similar?
> 
> Thanks a lot,
> 
> G.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

Reply via email to