mercredi 3 février 2016

How to use a nested inner join statement?

I have created three tables such that:

CREATE TABLE guest(

name varchar(100),
ranking int,
PRIMARY KEY (name)
);

CREATE TABLE room(

 roomname varchar(100),
 wallcolor varchar(100),
 rating int,
 PRIMARY KEY(roomnane)
 );

 CREATE TABLE reservation(

 name varchar(100),
 roomname varchar(100),
 day varchar(100),
 moveinday int,
 moveoutday int,
 PRIMARY KEY(roomname, day, start, finish),
  FOREIGN KEY(roomname) REFERENCES room(roomname),
  FOREIGN KEY(name) REFERENCES guest(name)
 );

I am trying to write a DELETE query to delete all the guests that are not qualified to rent a room. Qualified to rent means the guests ranking is greater than or equal to room ranking. Pretty much delete the reservation entry, and the guest too if they don't qualify

I tried

 DELETE 
 FROM
 reservation, guest
 INNER JOIN (
 SELECT
    reservation.roomname,
    reservation.day,
    reservation.start,
    reservation.finish
FROM
    guest
INNER JOIN reservation ON reservation.name = guest.name
INNER JOIN room ON reservation.roomname = room.roomname
WHERE
    room.rating > guest.ranking 
) invalidReservationTable  
ON reservation.roomname = invalidReservationTable.roomname
AND reservation.day = invalidReservationTable.day
AND reservation.start = invalidReservationTable.start
AND reservation.finish = invalidReservationTable.finish;

I am getting an error when I run this on sqlite on the Inner Join statement following the FROM reservation line. What am I doing wrong? Am I on the right track to delete just the reservation?

Aucun commentaire:

Enregistrer un commentaire