Oracle SDO_INSIDE funktion geht nicht

savanluffy

Neuer Benutzer
Beiträge
3
Code:
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
);

drop index village_idx;

CREATE INDEX village_idx ON village(building) INDEXTYPE IS MDSYS.SPATIAL_INDEX;


-- 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';


Hallo, ich versuche zu schauen ob sich irgendeine "Visitors" innerhalb von einem Gebäude befinden bzw in der Kirche.
Beim select jedoch bekomme ich diesen fehler:

Code:
Fehler beim Start in Zeile : 70 in Befehl -
SELECT * FROM village  WHERE SDO_INSIDE(village.building, visitors.position) = 'TRUE'
Fehler bei Befehlszeile : 70 Spalte : 59
Fehlerbericht -
SQL-Fehler: ORA-00904: "VISITORS"."POSITION": ungültiger Bezeichner
00904. 00000 -  "%s: invalid identifier"
*Cause:  
*Action:

Irgendeine Vorschläge was ich falsch mache?
 
Werbung:
Die Spalte Position kann ich nirgends finden. Woher soll die kommen?

Ja, das ist mir jetzt erst aufgefallen @drdimitri . Das Problem ist, dass ich eine eigene Tabelle "visitors" habe und ich will die position vom jeden Visitor mit den Koordinaten vom Village vergleichen. Ist es mit einer SQL Anweisung möglich, weil ich darf an den Tabellen keinen Foreignkey benutzten. => Ich kann keine Joins machen, somit komme ich nicht an die Koordinaten vom Visitor nicht.

Ich brauche nur die Visitors von der Kirche. Also nur einem Building
 
Werbung:
Zurück
Oben