Hey, that's exactly what I needed!  And I can still use WHERE clauses to 
further limit my results.  That's great, thank you!

I have one question though.  In this LEFT JOIN syntax, you used the 
following format:

LEFT JOIN secondary_table ON primary_table.col = secondary_table.col

Is this optimized?  In the case of WHERE clauses, for instance, I always 
put the main (most-limiting) criteria on the right side of the equals 
sign and the uncertain (least-limiting) criteria on the left side of the 
equals sign.

Since I've never used LEFT JOIN before, I am unsure of the best way to 
do it.


Erik



On Friday, June 14, 2002, at 04:05  PM, Luc Foisy wrote:

> How bout
>
> SELECT main.id, sub1.other, sub2.other FROM main LEFT JOIN sub1 ON 
> main.sub1fk = sub1.id LEFT JOIN sub2 ON main.sub2fk = sub2.id
>
> Luc
> mysql,sql
>
>> -----Original Message-----
>> From: Erik Price [mailto:[EMAIL PROTECTED]]
>> Sent: Friday, June 14, 2002 3:54 PM
>> To: [EMAIL PROTECTED]
>> Subject: is this query possible?
>>
>>
>> I have a query that I have in mind, but am not sure of how I can
>> actually write it.  It might not even be possible.  I was
>> hoping someone
>> could tell me if I will have to use two queries instead, or
>> if this will
>> actually work:
>>
>> (In simplified form:)
>>
>>               +--------+
>> +-------+    | main   |
>> | sub1  |    +--------+    +-------+
>> +-------+    | id     |    | sub2  |
>> | id    |---<| sub1fk |    +-------+
>> | other |    | sub2fk |>---| id    |
>> +-------+    +--------+    | other |
>>                             +-------+
>>
>> As you can see from the simple diagram, I have a main table
>> with its own
>> primary key (id) but with two foreign key columns.  The first one
>> (sub1fk) points to the primary key of the table "sub1".  The
>> second one
>> (sub2fk) points to the primary ky of the table "sub2".
>>
>> The query I'm trying to build would look something like this:
>>
>> SELECT  main.id,
>>          IF(main.sub1fk,sub1.other,NULL) AS sub1other,
>>          IF(main.sub2fk,sub2.other,NULL) AS sub2other
>> FROM    main, sub1, sub2
>> WHERE   main.id = some_criteria_or_other
>> AND     sub1.id = main.sub1fk
>> AND     sub2.id = main.sub2fk;
>>
>>
>> The above SQL, of course, won't work -- because there are no
>> situations
>> where all of the WHERE clauses are true.  Rather, I'm trying to get a
>> result set that would look like this (again, this is in theory):
>>
>> +----+-----------+-----------+
>> | id | sub1other | sub2other |
>> +----+-----------+-----------+
>> |  1 |         2 |      NULL |
>> |  2 |      NULL |         5 |
>> |  3 |      NULL |        17 |
>> |  4 |         8 |      NULL |
>> | .. |    ...etc |    ...etc |
>> +----+-----------+-----------+
>>
>> Later, in my application, I can test each column for NULL and I will
>> know that the other column is the one to use (for instance,
>> if the value
>> of the "sub1other" column is NULL in one record, then I'll
>> use the value
>> of sub2other to do what I want to do, and vice versa).
>>
>> But this just doesn't seem possible.  I can always do it with two
>> separate queries if need be, but it would be elegant to do it
>> with one.
>> Any advice?
>>
>> Thanks very much,
>>
>> Erik
>>
>>
>>
>> ----
>>
>> Erik Price
>> Web Developer Temp
>> Media Lab, H.H. Brown
>> [EMAIL PROTECTED]>
>
>





----

Erik Price
Web Developer Temp
Media Lab, H.H. Brown
[EMAIL PROTECTED]


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to