Thread: SQL equivalent to nested loop
Hi, I basically need the SQL equivalent of the following pseudo code: BEGIN FOR v IN SELECT * FROM f(4, 'foo') LOOP FOR w IN SELECT * FROM f(v.id, 'bar') LOOP RETURN NEXT W END LOOP; END LOOP; RETURN; Is that possible in SQL? Markus -- Markus Bertheau ☭ <twanger@bluetwanger.de>
This is basicly a Join, a cross table i.e. select b.w from table a, table b where ... |-----Original Message----- |From: twanger@bluetwanger.de [mailto:twanger@bluetwanger.de] |Sent: Montag, 06. Juni 2005 18:53 |To: pgsql-sql@postgresql.org |Subject: [SQL] SQL equivalent to nested loop | | |Hi, | |I basically need the SQL equivalent of the following pseudo code: | |BEGIN |FOR v IN SELECT * FROM f(4, 'foo') LOOP | FOR w IN SELECT * FROM f(v.id, 'bar') LOOP | RETURN NEXT W | END LOOP; |END LOOP; |RETURN; | |Is that possible in SQL? | |Markus | |-- |Markus Bertheau ☭ <twanger@bluetwanger.de> | | |---------------------------(end of |broadcast)--------------------------- |TIP 7: don't forget to increase your free space map settings |
Dnia 06-06-2005, pon o godzinie 20:08 +0200, KÖPFERL Robert napisał(a): > This is basicly a Join, a cross table > > i.e. > > select b.w from table a, table b where ... You'd hope that. The problem is that you don't have the tables and afterwards specify the join condition, but in specifying the tables (=calling the function) you have the join condition already. I can't figure out the right syntax. What are you proposing? SELECT * from f(4, 'foo') as b, f(b.int, 'bar')? oocms=# select * from object_get_list_of_reference_property(311, 'Themen') as b, object_get_list_of_reference_property(b.object_id, 'Objekte'); ERROR: ?????????????? ????????? ?? FROM ?? ????? ????????? ?? ?????? ????????? ?? ??? ?? ?????? ??????? I can't get an english error message atm :/, but that doesn't work. Markus -- Markus Bertheau <twanger@bluetwanger.de>
Instead of tablenames just use functions (tablefunctions) like my example select a."Id", a."Code" from "GetLanguages"() a, "GetLanguages"() b "2","en" "2","en" "1","de" "1","de" |-----Original Message----- |From: Markus Bertheau [mailto:twanger@bluetwanger.de] |Sent: Dienstag, 07. Juni 2005 01:17 |To: KÖPFERL Robert |Cc: pgsql-sql@postgresql.org |Subject: RE: [SQL] SQL equivalent to nested loop | | |Dnia 06-06-2005, pon o godzinie 20:08 +0200, KÖPFERL Robert napisał(a): |> This is basicly a Join, a cross table |> |> i.e. |> |> select b.w from table a, table b where ... | |You'd hope that. The problem is that you don't have the tables and |afterwards specify the join condition, but in specifying the tables |(=calling the function) you have the join condition already. I can't |figure out the right syntax. What are you proposing? | |SELECT * from f(4, 'foo') as b, f(b.int, 'bar')? | |oocms=# select * from object_get_list_of_reference_property(311, |'Themen') as b, object_get_list_of_reference_property(b.object_id, |'Objekte'); |ERROR: ?????????????? ????????? ?? |FROM ?? ????? ????????? ?? ?????? ????????? ?? ??? ?? ?????? ??????? | |I can't get an english error message atm :/, but that doesn't work. | |Markus | |-- |Markus Bertheau <twanger@bluetwanger.de> |