this also works:

  SELECT * FROM books LEFT OUTER JOIN (
    select book_id from users JOIN loans ON name = user_name
  ) ON id = book_id;


--- Joe Wilson <[EMAIL PROTECTED]> wrote:
> SQLite is having trouble resolving loans.book_id without an alias...
> 
> SELECT * FROM books LEFT OUTER JOIN (
>  select loans.book_id LBID from users JOIN loans 
>  ON users.name = loans.user_name
> ) ON books.id = LBID;
> 
> --- Jonathan Ellis <[EMAIL PROTECTED]> wrote:
> 
> > Not sure what's wrong with this SQL; it works fine with postgresql:
> > 
> > sqlite> SELECT * FROM books LEFT OUTER JOIN (users JOIN loans ON users.name=
> > loans.user_name) ON books.id = loans.book_id;
> > SQL error: no such column: loans.book_id
> > 
> > The table definitions are as follows:
> > 
> > CREATE TABLE books (
> >     id                   integer PRIMARY KEY,
> >     title                text NOT NULL,
> >     published_year       char(4) NOT NULL,
> >     authors              text NOT NULL
> > );
> > 
> > CREATE TABLE users (
> >     name                 varchar(32) PRIMARY KEY,
> >     email                varchar(128) NOT NULL,
> >     password             varchar(128) NOT NULL,
> >     classname            text,
> >     admin                int NOT NULL -- 0 = false
> > );
> > 
> > CREATE TABLE loans (
> >     book_id              int PRIMARY KEY REFERENCES books(id),
> >     user_name            varchar(32) references users(name)
> >         ON DELETE SET NULL ON UPDATE CASCADE,
> >     loan_date            date DEFAULT current_timestamp
> > );


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to