On Sep 14, 2005, at 8:11 PM, Ferindo Middleton Jr wrote:

I have a table which has two id fields which REFERENCE data back at another table. It's setup like this:

class_prerequisite_bindings(id SERIAL, class_id INTEGER REFERENCES classes(id), prerequisite INTEGER REFERENCES classes (id))

The classes table is like this:
classes(id        SERIAL, course_title    TEXT, course_code    TEXT)

I have the following query:
SELECT * FROM class_prerequisite_bindings, classes WHERE class_prerequisite_bindings.class_id = 64 AND class_prerequisite_bindings.class_id = classes.id;

If I run the query above, the result will only give me info about the class_id field matching id 64 back in the classes table. PROBLEM: I want this query to also show the info about the prerequisite field which would also have info at the classes table. This query will only show the course_title and course_code of the class_id but I need this for the prerequisite field as well. I think I need to do a JOIN, but I don't understand how. How can I do this?

Ferindo

This isn't the prettiest query in the world, but it's a starting point. The RIGHT JOIN allows you to include the columns you want for prerequisites that don't themselves have prerequisites.

SELECT *
FROM class_prerequisite_bindings, classes
WHERE class_prerequisite_bindings.class_id = 64
AND class_prerequisite_bindings.class_id = classes.id
UNION ALL
SELECT *
FROM class_prerequisite_bindings
    RIGHT JOIN classes
    ON classes.id = class_prerequisite_bindings.class_id
WHERE classes.id = (
    SELECT prerequisite
    FROM class_prerequisite_bindings
    WHERE class_id = 64
);

--
Thomas F. O'Connell
Co-Founder, Information Architect
Sitening, LLC

Strategic Open Source: Open Your i™

http://www.sitening.com/
110 30th Avenue North, Suite 6
Nashville, TN 37203-6320
615-469-5150
615-469-5151 (fax)
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to