I believe that unless you have constrained nR1 nR2 nR3 ... nR6 as NOT NULL then

select
   (select RefItem from REFTABLE where id=nR1),
   (select RefItem from REFTABLE where id=nR2),
   (select RefItem from REFTABLE where id=nR3),
   (select RefItem from REFTABLE where id=nR4),
   (select RefItem from REFTABLE where id=nR5),
   (select RefItem from REFTABLE where id=nR6)
from TBL;

written in join syntax needs to be expressed thusly:

    select ref1.RetItem, ref2.RetItem, ref3.RetItem, ref4.RetItem, 
ref5.RetItem, ref6.RetItem
      from TBL 
outer join REFTABLE ref1 on (nR1=ref1.id)
outer join REFTABLE ref2 on (nR2=ref2.id)
outer join REFTABLE ref3 on (nR3=ref3.id)
outer join REFTABLE ref4 on (nR4=ref4.id)
outer join REFTABLE ref5 on (nR5=ref5.id)
outer join REFTABLE ref6 on (nR6=ref6.id);

in order to obtain the comparable result sets where there is a NULL value.  

---
()  ascii ribbon campaign against html e-mail
/\  www.asciiribbon.org

> On 10/17/2012 4:23 PM, Gert Van Assche wrote:
> > I don't know how to do something very simple like this. I have two table
> > and I would like to see the value of one table as it is expressed in the
> > other.
> >
> > CREATE TABLE [REFTABLE] (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
> > [RefItem] CHAR);
> > INSERT INTO [REFTABLE]([RefItem]) VALUES('One');
> > INSERT INTO [REFTABLE]([RefItem]) VALUES('Two');
> > INSERT INTO [REFTABLE]([RefItem]) VALUES('Three');
> >
> > CREATE TABLE [TBL] (
> >    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
> >    [nR1] CONSTRAINT [r1] REFERENCES [REFTABLE]([id]),
> >    [nR2] CONSTRAINT [r2] REFERENCES [REFTABLE]([id]),
> >    [nR3] CONSTRAINT [r3] REFERENCES [REFTABLE]([id]),
> >    [nR4] CONSTRAINT [r4] REFERENCES [REFTABLE]([id]),
> >    [nR5] CONSTRAINT [r5] REFERENCES [REFTABLE]([id]),
> >    [nR6] CONSTRAINT [r6] REFERENCES [REFTABLE]([id])
> >    );
> >
> > INSERT INTO [TBL]([nR1], [nR2], [nR3], [nR4], [nR5], [nR6]) VALUES('1',
> > '2', '2', '3', '3', '3');
> >
> > I would like to do a select from TBL where I would see this:
> > 'One', 'Two', 'Two', 'Three', 'Three', 'Three'
> 
> select
>    (select RefItem from REFTABLE where id=nR1),
>    (select RefItem from REFTABLE where id=nR2),
>    (select RefItem from REFTABLE where id=nR3),
>    (select RefItem from REFTABLE where id=nR4),
>    (select RefItem from REFTABLE where id=nR5),
>    (select RefItem from REFTABLE where id=nR6)
> from TBL;
> 
> -- or
> 
> select ref1.RetItem, ref2.RetItem, ref3.RetItem, ref4.RetItem,
> ref5.RetItem, ref6.RetItem
> from TBL join REFTABLE ref1 on (nR1=ref1.id)
>    join REFTABLE ref2 on (nR2=ref2.id)
>    join REFTABLE ref3 on (nR3=ref3.id)
>    join REFTABLE ref4 on (nR4=ref4.id)
>    join REFTABLE ref5 on (nR5=ref5.id)
>    join REFTABLE ref6 on (nR6=ref6.id);
> 
> --
> Igor Tandetnik




_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to