sql query

sql query

am 27.01.2006 19:20:10 von Jure

This code works perfecty on mysql 4.1 bun my hosting is on mysql4.0.
silly me

Problem is on NOT IN

SELECT hotel.hotel, hotel.hotelid, hotel.price, hotel.star, place.place
FROM hotel left join region on hotel.idregion = region.idregion left
join place on hotel.idplace = place.idplace WHERE hotel.hotelid NOT IN
(select review_item_id from review where review.approve='y') AND
place.idplace = '$idplace' ORDER BY star DESC

How to get it work on mysql 4.0?

What I want.
Give me all hotels from some place (idplace) which are not in table
review or if they are in table review they have "n" in approve field

hotel.hotelid = review.review_item_id

Is it possible and how?

I don't know much about sql and I did this query with lot of help from
forums, documentations and some logic.

txh for your answers

jure

Re: sql query

am 27.01.2006 22:18:11 von Shion

Jure wrote:
> This code works perfecty on mysql 4.1 bun my hosting is on mysql4.0.
> silly me
>
> Problem is on NOT IN
>
> SELECT hotel.hotel, hotel.hotelid, hotel.price, hotel.star, place.place
> FROM hotel left join region on hotel.idregion = region.idregion left
> join place on hotel.idplace = place.idplace WHERE hotel.hotelid NOT IN
> (select review_item_id from review where review.approve='y') AND
> place.idplace = '$idplace' ORDER BY star DESC

As far as I remember, 4.0 don't support select in select, so the "select
review_item_id from review where review.approve='y'" you need to do first and
then store the values in php and then inject them into the IN().


//Aho

Re: sql query

am 27.01.2006 23:22:03 von Robert Stearns

J.O. Aho wrote:
> Jure wrote:
>
>>This code works perfecty on mysql 4.1 bun my hosting is on mysql4.0.
>>silly me
>>
>>Problem is on NOT IN
>>
>>SELECT hotel.hotel, hotel.hotelid, hotel.price, hotel.star, place.place
>>FROM hotel left join region on hotel.idregion = region.idregion left
>>join place on hotel.idplace = place.idplace WHERE hotel.hotelid NOT IN
>>(select review_item_id from review where review.approve='y') AND
>>place.idplace = '$idplace' ORDER BY star DESC
>
>
> As far as I remember, 4.0 don't support select in select, so the "select
> review_item_id from review where review.approve='y'" you need to do first and
> then store the values in php and then inject them into the IN().
>
>
> //Aho
Without subselect, perhaps a JOIN will do:

SELECT hotel.hotel, hotel.hotelid, hotel.price, hotel.star, place.place
FROM hotel
left join region on hotel.idregion = region.idregion
left join place on hotel.idplace = place.idplace
left join review on hotel.idplace = place.idplace
WHERE place.idplace = '$idplace'
AND (review.approve IS NULL
OR
review.approve<>'y')