так делать нельзя?(про коллекции)

Tohan_ORA
Дата: 25.11.2009 17:21:40
CREATE TYPE my_type AS VARRAY(100) OF DATE; 
CREATE TABLE testus(ID INT,dt my_type);
INSERT INTO testus(ID,dt) VALUES(1,my_type(SYSDATE,to_date('96,2,14','yy,mm,dd')));
INSERT INTO testus(ID,dt) VALUES(2,my_type(SYSDATE,to_date('96,2,14','yy,mm,dd')));

SELECT x.*  from table(SELECT dt FROM testus s WHERE ID=1)x
COLUMN_VALUE
25.11.2009 17:49:47
14.02.2006



SELECT y.id,x.*  from table(SELECT dt FROM testus s WHERE ID=y.ID)x,testus y
Ora-00904:invalid column name

Oracle 8.1.7
dmitrysk
Дата: 25.11.2009 17:46:16
Что-то вы нагородили..
Почему не так:

select x.* from testus t, table(t.dt) x where t.id=1
Tohan_ORA
Дата: 26.11.2009 10:08:35
dmitrysk
Что-то вы нагородили..

Да нет.
Нужно вывести на каждый id,свою коллекцию, т.е. необходимо реализовать обычный связанный подзапрос на каждую запись внешней таблички
т.е. нужно получить следущее:
iddt
126.11.2009 10:32:57
114.02.2096
226.11.2009 10:32:58
214.02.2095


кстати поправлю данные для наглядности.
+
CREATE TYPE my_type AS VARRAY(100) OF DATE; 
CREATE TABLE testus(ID INT,dt my_type);
INSERT INTO testus(ID,dt) VALUES(1,my_type(SYSDATE,to_date('96,2,14','yy,mm,dd')));
INSERT INTO testus(ID,dt) VALUES(2,my_type(SYSDATE,to_date('95,2,14','yy,mm,dd')));



SELECT y.id,x.*  from table(SELECT dt FROM testus s WHERE ID=y.ID)x,testus y
Ora-00904:invalid column name
4ton
Дата: 26.11.2009 10:25:14
select y.id,x.*
from testus y,table(y.dt) x
9i
Дата: 26.11.2009 10:26:43
Tohan_ORA,

SELECT y.id, x.*  from testus y, table(SELECT dt FROM testus s WHERE id=y.id) x
Tohan_ORA
Дата: 26.11.2009 10:31:18
dmitrysk
Что-то вы нагородили..
Почему не так:
select x.* from testus t, table(t.dt) x where t.id=1

Да.Вы правы:)

Всё получилось:
SELECT ID,COLUMN_VALUE AS dt FROM(select t.id,x.* from testus t, table(t.dt) x) p
Т.е. просто передаем коллекцию внешней таблички внутрь как параметр и все само свяжется как надо внутри table? Как я понимаю связать так можно только родные таблички?
Tohan_ORA
Дата: 26.11.2009 10:34:37
9i
Tohan_ORA,
SELECT y.id, x.*  from testus y, table(SELECT dt FROM testus s WHERE id=y.id) x

ORA-01427: single-row subquery returns more than one row
ten
Дата: 26.11.2009 12:42:28
Tohan_ORA
ORA-01427: single-row subquery returns more than one row

Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production

SQL> SELECT y.id, x.*
  2  from testus y, table(SELECT dt FROM testus s WHERE id=y.id) x
  3  /

        ID COLUMN_VA
---------- ---------
         1 26-NOV-09
         1 14-FEB-96
         2 26-NOV-09
         2 14-FEB-95

SQL>
Tohan_ORA
Дата: 26.11.2009 13:14:14
ten
Tohan_ORA
ORA-01427: single-row subquery returns more than one row

Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
With the Partitioning option
JServer Release 8.1.7.4.0 - Production

SQL> SELECT y.id, x.*
  2  from testus y, table(SELECT dt FROM testus s WHERE id=y.id) x
  3  /

        ID COLUMN_VA
---------- ---------
         1 26-NOV-09
         1 14-FEB-96
         2 26-NOV-09
         2 14-FEB-95

SQL>

Connected to Oracle8i Enterprise Edition Release 8.1.7.2.0 


SQL> SELECT y.id, x.*  from testus y, table(SELECT dt FROM testus s WHERE id=y.id) x
  2  /

SELECT y.id, x.*  from testus y, table(SELECT dt FROM testus s WHERE id=y.id) x

ORA-01427: single-row subquery returns more than one row

SQL>
ten
Дата: 26.11.2009 13:25:17
А почему, собственно, не просто:
SELECT y.id, x.*  from testus y, table(y.dt) x;
?