Re: showing multiple REFERENCE details of id fields in single query that share the same table
От | Thomas O'Connell |
---|---|
Тема | Re: showing multiple REFERENCE details of id fields in single query that share the same table |
Дата | |
Msg-id | AE7033A4-E297-4BE6-A404-EBF9C318735D@sitening.com обсуждение исходный текст |
Ответ на | showing multiple REFERENCE details of id fields in single query that share the same table (Ferindo Middleton Jr <fmiddleton@verizon.net>) |
Список | pgsql-sql |
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)
В списке pgsql-sql по дате отправления: