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