powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Добрейшего всем вечера.
3 сообщений из 3, страница 1 из 1
Добрейшего всем вечера.
    #39712741
Vitaly1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос: Как я могу сравнить две строки таблицы при помощи 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

з ы я ещё совсем новичок готов принять любую критику и если есть уже ссылки по теме пришлите пожалуйста
...
Рейтинг: 0 / 0
Добрейшего всем вечера.
    #39712762
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Сравнить" и "проверить максимальную заполненность" - две разные задачи, причем практического применения второй сходу не придумаю. Обычно есть минимальная заполненность, ее обеспечивают constraints.

Новичку советы: использовать тег SRC и предоставлять данные в виде with.

Простой способ сравнения по нескольким полям - minus.

Код: plsql
1.
2.
3.
4.
5.
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
...
Рейтинг: 0 / 0
Добрейшего всем вечера.
    #39712791
Фотография Viewer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitaly1999,

http://www.sql.ru/forum/rules.aspxр Правила форума на SQL.RU
Не рекомендуется:
Публиковать сообщения с бессмысленными темами.
Например: <Люди помогите>, <Проблема!!>, <Срочно нужна помощь!>, <может знаете?> и т.д.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Добрейшего всем вечера.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]