Вы не показывали нам никаких команд DDL, поэтому позвольте мне создать пример на основе вашего вопроса.
У нас есть 2 таблицы, одна с заказами, вторая с местоположениями для заказов.
CREATE TABLE "ORDERS" ("ORDERID" NUMBER, "DATA" VARCHAR2(200), PRIMARY KEY("ORDERID"));
INSERT INTO "ORDERS" VALUES (1, 'test order 1');
INSERT INTO "ORDERS" VALUES (2, 'test order 2');
INSERT INTO "ORDERS" VALUES (3, 'test order 3');
INSERT INTO "ORDERS" VALUES (4, 'test order 4');
CREATE TABLE "LOCATIONS" ("LOCATIONID" NUMBER, "ORDERID" NUMBER, "CITY" VARCHAR2(200), PRIMARY KEY("LOCATIONID"));
INSERT INTO "LOCATIONS" VALUES (1,1, 'NEW YORK');
INSERT INTO "LOCATIONS" VALUES (2,1, 'CHICAGO');
INSERT INTO "LOCATIONS" VALUES (3,1, 'ATLANTA');
INSERT INTO "LOCATIONS" VALUES (4,2, 'SAN FRANCISCO');
INSERT INTO "LOCATIONS" VALUES (5,3, 'LOS ANGELES');
INSERT INTO "LOCATIONS" VALUES (6,3, 'LAS VEGAS');
INSERT INTO "LOCATIONS" VALUES (7,3, 'MOSCOW');
INSERT INTO "LOCATIONS" VALUES (8,4, 'PARIS');
Запрос очень просто выбрать с подзапросом.
SELECT "ORDERS"."ORDERID", "ORDERS"."DATA"
FROM "ORDERS"
WHERE (
SELECT COUNT(*)
FROM "LOCATIONS"
WHERE "LOCATIONS"."ORDERID"="ORDERS"."ORDERID")=1 ;
Подзапрос получает счетчик для каждого ордера, и предложение WHERE спрашивает, равно ли это число 1.
Но что касается оптимальной модели данных, у вас должно быть 3 таблицы: одна для заказов, вторая для возможных местоположений, а затем третья таблица для отношения M: N между заказами и местоположениями.Это сделано для предотвращения дублирования данных, так как я предполагаю, что многие местоположения будут использоваться много раз снова и снова.