Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Oracle |
![]() ![]() |
Vitaly1999 Member Откуда: Сообщений: 1 |
Вопрос: Как я могу сравнить две строки таблицы при помощи sql. конкретнее у меня есть таблица --Таблица адресов create table ADDRESSES ( id number(38,0) not null, client_id number(38,0) not null, a_type number(38,0) not null, city varchar2(50) not null, street varchar2(50) null, house varchar2(50) null, flat varchar2(50) null, created date default sysdate not null, archive char(1) default 'N' not null ) в ней интересны 4 поля city varchar2(50) not null, street varchar2(50) null, house varchar2(50) null, flat varchar2(50) null, т е может быть заполнен лишь город а может город и улица , также могут быть заполнены все 4 поля . я составил запрос, необходимо добавить ещё условие проверку на максимальную заполненность этих полей select distinct cl.id, cl.name AS name, (select c_info from contacts where c_type = 1 AND cl.id = client_id AND archive = 'Y' AND created in ( select max(created) from contacts where c_type = 1 AND cl.id = client_id AND archive = 'Y')) phone, (select c_info from contacts where c_type = 2 AND cl.id=client_id AND archive = 'Y' AND created in ( select min(created) from contacts where c_type = 2 AND cl.id = client_id AND archive = 'Y')) e_mail, adr.city address from clients cl left join contacts con on cl.id = con.CLIENT_ID left join addresses adr on cl.id = adr.CLIENT_ID where adr.id in (select a.id from addresses a where a.a_type in (select max(a_type) from addresses where cl.id = client_id AND archive = 'Y') AND a.city AND --самая последняя дата добавления адреса a.created in (select max(created) from addresses where a_type = a.a_type AND cl.id = client_id AND archive = 'Y')) order by cl.id з ы я ещё совсем новичок готов принять любую критику и если есть уже ссылки по теме пришлите пожалуйста |
4 окт 18, 01:51 [21694723] Ответить | Цитировать Сообщить модератору |
dmdmdm Member Откуда: Нижний Новгород Сообщений: 1143 |
"Сравнить" и "проверить максимальную заполненность" - две разные задачи, причем практического применения второй сходу не придумаю. Обычно есть минимальная заполненность, ее обеспечивают constraints. Новичку советы: использовать тег SRC и предоставлять данные в виде with. Простой способ сравнения по нескольким полям - minus. with t1 as (select 'Moscow' city, 'Red square' street, 1 house, 1 flat from dual), t2 as (select 'Moscow' city, 'Red square' street, 1 house, null flat from dual) select * from t1 minus select * from t2 |
4 окт 18, 07:18 [21694753] Ответить | Цитировать Сообщить модератору |
Viewer Member Откуда: Самара Сообщений: 5271 |
Vitaly1999,
|
||
4 окт 18, 09:09 [21694804] Ответить | Цитировать Сообщить модератору |
Все форумы / Oracle | ![]() |