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]> 

---------------------------------------------------------------------
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