Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
нужно написать запрос, который выводит список супружеских пар(брак может заключаться несколько раз) нужно вывести только действующие браки
таблица к примеру имеет вид
ID_муж ID_жена Дата_закл_брака
400 300 19.03.1965
100 500 09.08.2003
400 100 20.03.1970
200 300 01.04.1973
700 500 01.01.2004

В результате должно быть:

400 100 20.03.1970
200 300 01.04.1973
700 500 01.01.2004
8 май 12, 12:54    [12523097]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
qwerty112
Guest
ola_ya_22
нужно написать запрос, который выводит список супружеских пар(брак может заключаться несколько раз) нужно вывести только действующие браки
таблица к примеру имеет вид
ID_муж ID_жена Дата_закл_брака
400 300 19.03.1965
100 500 09.08.2003
400 100 20.03.1970
200 300 01.04.1973
700 500 01.01.2004

В результате должно быть:

400 100 20.03.1970
200 300 01.04.1973
700 500 01.01.2004

select * from T t1
where not exists (select 1 from T t2 where t1.ID_муж=t2.ID_муж and t1.Дата_закл_брака<t2.Дата_закл_брака)
  and not exists (select 1 from T t2 where t1.ID_жена=t2.ID_жена and t1.Дата_закл_брака<t2.Дата_закл_брака)
8 май 12, 13:03    [12523137]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
qwerty112,
подсажите пожалуйста что значит 1 в select
ни разу с таким не встречалась(((
8 май 12, 13:25    [12523262]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
aleks2
Guest
ola_ya_22
qwerty112,
подсажите пожалуйста что значит 1 в select
ни разу с таким не встречалась(((


Правильно писать *. А единичку пишут лохи, не читавшие документацию по exists.
8 май 12, 14:53    [12523658]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
aleks2,
А с помощью join можно аналогичный запрос написать?
и предположим у меня есть еще таблица
ID FIO
100 Ivanov
200 Petova
300 Sidorova
400 Ivanova
мне нужно чтобы Id в результирующей таблице было заменено на фамилию персоны
8 май 12, 15:07    [12523720]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
aleks2
Guest
ola_ya_22
aleks2,
А с помощью join можно аналогичный запрос написать?
и предположим у меня есть еще таблица
ID FIO
100 Ivanov
200 Petova
300 Sidorova
400 Ivanova
мне нужно чтобы Id в результирующей таблице было заменено на фамилию персоны

Ну присоедините [еще таблица] join-ом

select *, X1.FIO as FIO_муж from T t1
inner join [еще таблица] X1 on X1.ID=t1.ID_муж
where not exists (select 1 from T t2 where t1.ID_муж=t2.ID_муж and t1.Дата_закл_брака<t2.Дата_закл_брака)
  and not exists (select 1 from T t2 where t1.ID_жена=t2.ID_жена and t1.Дата_закл_брака<t2.Дата_закл_брака)
8 май 12, 15:25    [12523781]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
qwerty112
Guest
aleks2
ola_ya_22
qwerty112,
подсажите пожалуйста что значит 1 в select
ни разу с таким не встречалась(((


Правильно писать *. А единичку пишут лохи, не читавшие документацию по exists.

абиделься, да ?

ТС,

потерпевший - шутит,
разницы нет никакой - хоть select *, хоть select 1, хоть select 128/0
"разница" может появится, если "с каких-то ...", кому-то прийдёт в голову писать перечисление столбцов

зы
а на какой-то "при-царе-горохе" версии (или 6.5 или 7.0) - с select * в exists - была какая-то проблема, и "все дружно" писали select 1
нуу, это так - слухи ...
8 май 12, 15:51    [12523881]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
aleks2,

select X1.FIO as муж,X2.FIO as жена,date from Pairs1 t1
right join Person X1 on X1.ID=t1.Idg inner join
Person X2 on X2.ID=t1.Idm
where not exists (select * from Pairs1 t2 where t1.Idg=t2.Idg and t1.date<t2.date)
and not exists (select * from Pairs1 t2 where t1.Idm=t2.Idm and t1.date<t2.date)

Так?
8 май 12, 16:43    [12524116]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
ola_ya_22
qwerty112,
подсажите пожалуйста что значит 1 в select
ни разу с таким не встречалась(((


Эта значит цифра 1, что же ещё ?
8 май 12, 16:56    [12524149]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
ola_ya_22
aleks2,

select X1.FIO as муж,X2.FIO as жена,date from Pairs1 t1
right join Person X1 on X1.ID=t1.Idg inner join
Person X2 on X2.ID=t1.Idm
where not exists (select * from Pairs1 t2 where t1.Idg=t2.Idg and t1.date<t2.date)
and not exists (select * from Pairs1 t2 where t1.Idm=t2.Idm and t1.date<t2.date)

Так?


БЕЗ RIGHT.
Оба JOIN-а должны быть обычные.
8 май 12, 16:59    [12524160]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
MasterZiv,

select X1.FIO as муж,X2.FIO as жена,date from Pairs1 t1
inner join Person X1 on X1.ID=t1.Idg inner join
Person X2 on X2.ID=t1.Idm
where not exists (select * from Pairs1 t2 where t1.Idg=t2.Idg and t1.date<t2.date)
and not exists (select * from Pairs1 t2 where t1.Idm=t2.Idm and t1.date<t2.date)

а подскажите почему оба обычные джойны должны быть?
8 май 12, 17:07    [12524184]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ola_ya_22,

Потому что "необычные" не подходят...
8 май 12, 18:27    [12524414]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
Как с помощью конструкции delete from C
удалить все повторяющиеся строки из столбца
8 май 12, 19:30    [12524631]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
ola_ya_22
Как с помощью конструкции delete from C
удалить все повторяющиеся строки из столбца

Строки из чего? Еще раз, по буквам... Хотя желательно с примером.
8 май 12, 19:33    [12524640]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ola_ya_22,

Кто из нас проходит тестирование\сдает экзамен?!

ЗЫ. А сколько надо стаканов воды на стакан гречи?
8 май 12, 19:34    [12524644]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
kDnZP,

столбец
AAA
ABA
BAA
BBB
AAA
BBA
BBA

Должно получиться

AAA
ABA
BAA
BBB
BBA

select distinct не подойдет
нужно именно удаление
8 май 12, 19:43    [12524679]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
pkarklin,
гречу надо покрыть водой на 2 пальца примерно))))
8 май 12, 19:44    [12524685]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
ola_ya_22, пронумеровать, каждый больший нежели 1 - удалить.
8 май 12, 19:48    [12524692]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
kDnZP
ola_ya_22, пронумеровать, каждый больший нежели 1 - удалить.

Нумеровать ессно в разрезе "столбец", а не всквозную
* Читать про ROW_NUM()
8 май 12, 19:49    [12524697]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ola_ya_22,

Приведите полностью структуру таблицы.
8 май 12, 19:49    [12524701]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Блин... ROW_NUMBER() имел в виду. Пора домой, заработался.
8 май 12, 19:50    [12524703]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
pkarklin,
таблица состоит из 1 такого столбца
8 май 12, 19:52    [12524716]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
aleks2
Guest
ola_ya_22
Как с помощью конструкции delete from C
удалить все повторяющиеся строки из столбца

Хе-хе! Напомнило мне мое последнее собеседование...
Не, я канешно ответил на такую ерунду.

Забавнее другое. Я в резюме на форум сослался.
https://www.sql.ru/forum/actualsearch.aspx?search=aleks2&sin=0&bid=1&a=&ma=1&dt=-1&s=1&so=1
Они почитали мои ответы на ЭТОМ форуме и больше ничо спрашивать не стали...
8 май 12, 19:59    [12524738]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ola_ya_22
таблица состоит из 1 такого столбца


Задача одной инструкцией DELETE в общем случае не решается.

Сообщение было отредактировано: 8 май 12, 20:02
8 май 12, 20:01    [12524744]     Ответить | Цитировать Сообщить модератору
 Re: подскажите алгоритм  [new]
ola_ya_22
Member

Откуда:
Сообщений: 251
aleks2,
и в результате?
8 май 12, 20:07    [12524755]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить