Forum Moderators: open

Message Too Old, No Replies

LEFT JOIN.Not working

         

Pico_Train

3:50 pm on Apr 27, 2008 (gmt 0)

10+ Year Member



This query works...

"SELECT accommodation.id,
accommodation.name,
accommodation.name_fix,
accommodation.address,
accommodation.address2,
accommodation.postcode,
accommodation.tel,
accommodation.fax,
accommodation.url,
accommodation.email,
accommodation.price,
accommodation.price_type,
accommodation.rooms,
accommodation.rating,
accommodation.short_desc,
accommodation.long_desc,
accommodation.water,
accommodation.pets,
accommodation.type_id_fk,
l.name as location,
type.type
FROM accommodation, location as l, type
WHERE accommodation.location_id_fk = l.id
and type.id = accommodation.type_id_fk
AND accommodation.active like ".'"yes"'."
AND l.name_fix like '%$name%'"

This one doesn't, with a left join.

"SELECT accommodation.id,
accommodation.name,
accommodation.name_fix,
accommodation.address,
accommodation.address2,
accommodation.postcode,
accommodation.tel,
accommodation.fax,
accommodation.url,
accommodation.email,
accommodation.price,
accommodation.price_type,
accommodation.rooms,
accommodation.rating,
accommodation.short_desc,
accommodation.long_desc,
accommodation.water,
accommodation.pets,
accommodation.type_id_fk,
l.name as location,
type.type
FROM accommodation, location as l
left join type on (type.id = accommodation.type_id_fk)
WHERE accommodation.location_id_fk = l.id
AND accommodation.active like ".'"yes"'."
AND l.name_fix like '%$name%'"

anybody have any ideas? Please ? :-)

syber

7:33 pm on Apr 27, 2008 (gmt 0)

10+ Year Member



You are trying to combine the two types of join operations.

It should look like this:

..
...
FROM accommodation JOIN location AS l
ON accommodation.location_id_fk = l.id
LEFT JOIN type
ON type.id = accommodation.type_id_fk
WHERE accommodation.active like ".'"yes"'."
AND l.name_fix like '%$name%'"

Pico_Train

8:32 pm on Apr 27, 2008 (gmt 0)

10+ Year Member



Wow! Ok, that works but I don't really understand why?

syber

8:01 pm on Apr 29, 2008 (gmt 0)

10+ Year Member



The JOIN statement was introduced in the SQL-92 ANSI standard. In the SQL-89 ANSI standard and before, the only way to do a join was to say: FROM table1,table2 WHERE table1.field = table2.field.

Today you can use either method, but you can't mix them in the same FROM clause.