Terry A. Haimann wrote:
Lets say I have a Database defined as
create table Photos (
PhotoIdx Varchar(20),
PhotograherIdx varchar(20),
PhotoTypeIdx varchar(20),
CameraIdx varchar(20)
PhotoDate DateTime );
Create table Photographer (
PhotographerIdx varchar(20),
Photographer varchar(50));
Create table PhotoType (
PhotoTypeIdx varchar(20),
PhotoType varchar(50));
Create table Camera (
CameraIdx varchar(20),
Camera varchar(50));
Therefore, a select to print the basic info would be:
select Photos.PhotoIdx, Photographer.Photograper, PhotoType.PhotoType,
Camera.Camera, Photos.PhotoDate from
Photos, Photorapher, PhotoType, Camera where
((Photos.PhotograherIdx = Photographer.PhotograperIdx) and
(Photos.PhotoTypeIdx = PhotoType.PhotoType) and
(Photos.CameraIdx = Camera.CameraIdx));
A lot of typos in that, but I'll assume that wasn't the problem.
The problem with doing this is that if any of the lookup indexes are
null (such as Photos.PhotographerIdx, Photos.PhotoTypeIdx or
Photos.CameraIdx) or point to a nonexistent record in the lookup table,
the record will not be selected. So one has to use a left outer join.
The problem is I can get a left outer join to work that links two table,
but not more.
It's hard to say what you did wrong without seeing your query.
So how woulds you construct the above select to use only left outer
joins???
Thx, Terry
This should do:
SELECT Photos.PhotoIdx, Photographer.Photographer, PhotoType.PhotoType,
Camera.Camera, Photos.PhotoDate
FROM Photos
LEFT JOIN Photographer
ON Photos.PhotographerIdx = Photographer.PhotographerIdx
LEFT JOIN PhotoType
ON Photos.PhotoTypeIdx = PhotoType.PhotoType
LEFT JOIN Camera
ON Photos.CameraIdx = Camera.CameraIdx;
Michael
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]