При попытке "SDO_INSIDE" возникает "неверный идентификатор"

Я пытаюсь проверить, находятся ли "посетители" внутри "деревенского здания". Но каждый раз, когда я выполняю свой оператор SELECT, я получаю ошибку, что "позиция" в таблице "посетители" является неверным идентификатором.

DROP TABLE village CASCADE CONSTRAINTS;

CREATE TABLE village (
  building_id integer PRIMARY KEY,
  name VARCHAR2(30),
  visitors integer,
  building SDO_GEOMETRY
);

/*****************index********************/
delete from user_sdo_geom_metadata where table_name = 'VILLAGE';

INSERT INTO user_sdo_geom_metadata
(   TABLE_NAME,
    COLUMN_NAME,
    DIMINFO,
   SRID
)
VALUES
(   'village',
    'building',
    SDO_DIM_ARRAY( -- 20X20 grid
    SDO_DIM_ELEMENT('X', 0, 1000, 0.5),
    SDO_DIM_ELEMENT('Y', 0, 1000, 0.5)
),
  NULL -- SRID
);


-- inserts
INSERT INTO village VALUES(1,'Kirche', 4,
    SDO_GEOMETRY(
    2003, 
    NULL,
    NULL,
    SDO_ELEM_INFO_ARRAY(1,1003,1), 
    SDO_ORDINATE_ARRAY(100,100, 100,120, 80,120, 80,150 ,100,200, 150,200, 150,150, 200,150, 200,120, 150,120, 150,100)
    )
);


drop table visitors;
create table visitors(
  id integer,
  position SDO_GEOMETRY
);

drop sequence visitors_seq;
create sequence visitors_seq;

INSERT INTO visitors VALUES (visitors_seq.nextval,
  SDO_GEOMETRY(
    2001,
    NULL,
    SDO_POINT_TYPE(160, 100, NULL),
    NULL,
    NULL
  )
);
commit;


SELECT * FROM village  WHERE SDO_INSIDE(village.building, visitors.position) = 'TRUE';

Может ли быть так, что я должен использовать данные SDO_GEOMETRY в качестве параметра вместо "посетителей.позиции"?

1 ответ

Ваш запрос FROM предложение не ссылается на таблицу visitors, Вы должны будете включить это.

Другие вопросы по тегам