CREATE TABLE Face.Person
("LAST_NAME" VARCHAR2(50 BYTE),
"TICKET_NUMBER" VARCHAR2(50 BYTE));
insert into Person(last_name,ticket_number) values('johnson','100');
insert into Person(last_name,ticket_number) values('smith','200');
CREATE TABLE Face.Orders
("REGION" VARCHAR2(50 BYTE),
"STATE" VARCHAR2(50 BYTE),
"A_CODE" VARCHAR2(5 BYTE),
"STORE_NUM" VARCHAR2(50 BYTE),
"TICKET_NUMBER" VARCHAR2(50 BYTE),
"SEQ" NUMBER(12));
insert into Orders(ticket_number, REGION, STATE, STORE_NUM, A_CODE, SEQ ) values('100', 'S', 'F1', '111', 'Mia', 1);
insert into Orders(ticket_number, REGION, STATE, STORE_NUM, A_CODE, SEQ ) values('100', 'S', 'F1', '222', 'FLL', 2);
insert into Orders(ticket_number, REGION, STATE, STORE_NUM, A_CODE, SEQ ) values('100', 'S', 'F1', '333', 'PBI', 3);
insert into Orders(ticket_number, REGION, STATE, STORE_NUM, A_CODE, SEQ ) values('100', 'S', 'F1', '444', 'BOC', 4);
SELECT A.LAST_NAME, A.TICKET_NUMBER, B.REGION, B.STATE
FROM PERSON A
JOIN Orders B ON A.TICKET_NUMBER
= (SELECT * FROM Orders WHERE A.TICKET_NUMBER= B.TICKET_NUMBER
AND ROWNUM = 1);
Присоединиться к обеим таблицам по номеру билета. Человек - это один ко многим отношениям с Орденами. Существует несколько заказов, но нужна только одна запись заказов (из 4), которая соответствует номеру заявки из обеих таблиц. Причина в том, что поля, требуемые из таблицы заявок, остаются одинаковыми для всех записей с одинаковым номером заявки.
Ожидаемый результат:
Johnson 100 S Fl
Джонсон и 100 из person
таблицы и S и FL, которые остаются одинаковыми для всех записей на уникальный номер заявки, из Orders
таблицы
Oracle 12c