Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
CREATE TABLE x#user( id NUMBER PRIMARY KEY, --идентификатор гражданина C_FIO varchar2(100) --ФИО гражданина – формат строки: фамилия, имя, отчество через запятую CHECK(REGEXP_LIKE (C_FIO,'^[А-ЯЁ][а-яё]+,[А-ЯЁ][а-яё]+,[А-ЯЁ][а-яё]+$')) ); --вставка пользователей INSERT INTO x#user VALUES (1, 'Иванов,Иван,Иванович'); INSERT INTO x#user VALUES (2, 'Сидоров,Пётр,Иванович'); INSERT INTO x#user VALUES (3, 'Чехов,Павел,Михайлович'); INSERT INTO x#user VALUES (4, 'Соколова,Наталья,Степановна'); INSERT INTO x#user VALUES (5, 'Рубцов,Виктор,Иванович'); INSERT INTO x#user VALUES (6, 'Петров,Иван,Николаевич'); INSERT INTO x#user VALUES (7, 'Маршак,Самуил,Яковлевич'); INSERT INTO x#user VALUES (8, 'Гагарин,Юрий,Алексеевич'); INSERT INTO x#user VALUES (9, 'Багров,Данила,Сергеевич'); INSERT INTO x#user VALUES (10, 'Барто,Агния,Львовна'); INSERT INTO x#user VALUES (11, 'Пахмутова,Александра,Николаевна'); INSERT INTO x#user VALUES (12, 'Черкасский,Давид,Янович'); CREATE TABLE x#address( id number primary key, --идентификатор адреса прописки c_address varchar2(4000) --формат адреса: город, улица, дом, квартира, почтовый индекс в указанном порядке через запятую CHECK(REGEXP_LIKE (c_address,'^[А-ЯЁ][а-яё][^\\/:*?"<>|]++,[А-ЯЁ][а-яё][^\\/:*?"<>|]++,[0-9]+,[0-9]+,[0-9]{6}$')) ); INSERT INTO x#address VALUES (1, 'Сызрань,Ильича,15,12,675485'); INSERT INTO x#address VALUES (2, 'Москва,Свободы,10,30,123444'); INSERT INTO x#address VALUES (3, 'Москва,Тверская,22,18,123344'); INSERT INTO x#address VALUES (4, 'Москва,Кольцевая,1,100,125555'); INSERT INTO x#address VALUES (5, 'Кунгур,Бочкарева,170,1,617475'); INSERT INTO x#address VALUES (6, 'Самара,Восточная,40,0,332445'); INSERT INTO x#address VALUES (7, 'Оренбург,Челюскенцев,7,2,460005'); INSERT INTO x#address VALUES (8, 'Саратов,Пролетарская,55,44,685478'); INSERT INTO x#address VALUES (9, 'Пермь,Майская,1,1,458796'); INSERT INTO x#address VALUES (10, 'Пермь,Ленина,27,42,458796'); INSERT INTO x#address VALUES (11, 'Ленинград,Невский,43,120,645966'); INSERT INTO x#address VALUES (12, 'Санкт-Петербург,Староколенный,3,10,645900'); INSERT INTO x#address VALUES (13, 'Москва,Шаболовка,37,1,125555'); INSERT INTO x#address VALUES (14, 'Москва,Театральная,66,102,123445'); CREATE TABLE x#user_on_adress( id number primary key, --идентификатор прописки c_user number not null, --идентификатор гражданина c_address number not null, --идентификатор адреса прописки c_begin date not null, --дата прописки c_end date --дата выписки ); ALTER TABLE x#user_on_adress ADD CONSTRAINT FK_userOnAdress FOREIGN KEY (c_user) REFERENCES x#user(id); ALTER TABLE x#user_on_adress ADD CONSTRAINT FK_address FOREIGN KEY (c_address) REFERENCES x#address(id); INSERT INTO x#user_on_adress VALUES (1, 1, 1, to_date('20.07.1987','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (2, 2, 2, to_date('15.04.1993','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (3, 3, 5, to_date('01.09.1980','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (4, 4, 6, to_date('10.02.2001','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (5, 5, 8, to_date('20.05.1995','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (6, 6, 9, to_date('08.08.2003','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (7, 7, 11, to_date('20.06.1930','dd.mm.yyyy'),to_date('01.01.1969','dd.mm.yyyy')); INSERT INTO x#user_on_adress VALUES (8, 8, 7, to_date('21.03.1959','dd.mm.yyyy'),to_date('01.04.1960','dd.mm.yyyy')); INSERT INTO x#user_on_adress VALUES (9, 8, 3, to_date('15.08.1963','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (10,9, 12, to_date('30.01.1994','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (11,12,13, to_date('11.10.1972','dd.mm.yyyy'),to_date('17.11.2008','dd.mm.yyyy')); INSERT INTO x#user_on_adress VALUES (12,11,14, to_date('05.03.1966','dd.mm.yyyy'),null); INSERT INTO x#user_on_adress VALUES (13,1, 10, to_date('20.07.1986','dd.mm.yyyy'),null); with param as (select 1 p_mode from dual) , allRes as (select u.C_FIO, ua.id, ua.c_user, replace(ad.c_address, SUBSTR(ad.c_address, LENGTH(ad.c_address) - 6, 7),'') as adress, SUBSTR(ad.c_address, LENGTH(ad.c_address) - 5, 6) as ind from x#user u left join x#user_on_adress ua on u.id=ua.c_user left join x#address ad on ad.id=ua.c_address) select C_FIO as ФИО, adress as Адрес, ind as Индекс from allRes ar left join param on 1=1 left join (select max(ua.id) as id, ua.c_user from allRes ua group by ua.c_user) ua on ar.c_user=ua.c_user where case when p_mode = -1 and adress is null then 1 when p_mode = 1 and ua.id = ar.id then 1 when p_mode = 0 and adress is not null then 1 end = 1;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear