Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/114: Рейтинг темы: голосов - 114, средняя оценка - 4.90
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
1

Выборка из таблицы одинаковых записей

25.03.2011, 16:42. Показов 23746. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Выборка из таблицы одинаковых записей, понимаю, что тема не новье, но прошу помощи!

Есть таблица:
Выборка из таблицы одинаковых записей


Необходимо составить запрос, чтобы получился результат:

Выборка из таблицы одинаковых записей

Помогите пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2011, 16:42
Ответы с готовыми решениями:

Выборка n-ых записей подчинённой таблицы
Здравствуйте. Допустим, есть Table1: ID, Name #Table2: ID, Table1ID, Name, Value Необходимо...

14 одинаковых записей
Всем дд! Сделал запрос на выборку данных из таблицы select a.* from a40 a, D40 d where...

Выборка уникальных записей
Допустим есть таблица, в ней около 10К записей. Таблица хранит в себе результаты кореляционного...

Выборка неуникальных записей из базы
Как выбрать все неуникальные записи из базы ?

11
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
25.03.2011, 17:54 2
эм. необходимо отсортировать по имени или выборка 2-х имён?

Запрос на выборку:
T-SQL
1
2
3
4
5
6
7
select
  FIO,
  KCH,
  NOM1
from table_you
where
  FIO in ('Алексеев','Коромыслов')
Добавлено через 17 минут

Извини. не внимательно прочитал. Считаю секунды до конца раб. дня

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
  FIO,
  KCH,
  NOM1
FROM table_you
where FIO=(
    SELECT
      FIO
    FROM table_you
    group by
      FIO
    Having (FIO)>1 )
1
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
26.03.2011, 00:29  [ТС] 3
Спасиб, да это то! но я немного не уточнил, если у Алексеева у одной записи изменить значение на 1 и 3, то будет неверный результат. он его выведет, а нужно сделать равенство по всем трем полям
0
58 / 58 / 1
Регистрация: 19.03.2011
Сообщений: 149
26.03.2011, 00:49 4
2005+
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
with s as
(select 'Алексеев'   fio, 1 kch, 2 nom1 union all
 select 'Мирошкин'   fio, 7 kch, 8 nom1 union all
 select 'Алексеев'   fio, 1 kch, 2 nom1 union all
 select 'Михайловы'  fio, 3 kch, 2 nom1 union all
 select 'Коромыслов' fio, 4 kch, 2 nom1 union all
 select 'Коромыслов' fio, 4 kch, 2 nom1
)
select fio, kch, nom1
from
 (select fio, kch, nom1,
  count(*) over (partition by fio, kch, nom1) cnt
  from s
 )s 
where cnt > 1;
Добавлено через 15 минут
1, 2
2
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
26.03.2011, 01:33  [ТС] 5
Огромное всем спасибо, Амкад, а вам за ссылочки и объяснение.
я пишу запрос для таблиц dbf. и конструкция Select From Select в данном случае не работает, может, что посоветуете?
0
58 / 58 / 1
Регистрация: 19.03.2011
Сообщений: 149
26.03.2011, 01:51 6
SQL
1
2
3
4
5
6
7
SELECT s.fio, s.kch, s.nom1
FROM s
INNER JOIN (SELECT fio, kch, nom1
            FROM s
            GROUP BY fio, kch, nom1
            HAVING COUNT(*) > 1
           ) t ON s.fio = t.fio AND s.kch = t.kch AND s.nom1 = t.nom1;
0
1 / 1 / 0
Регистрация: 05.01.2011
Сообщений: 25
26.03.2011, 09:34  [ТС] 7
Вот это он уже не понимает:
SQL
1
2
(SELECT fio, kch, nom1,
  COUNT(*) OVER (partition BY fio, kch, nom1) cnt
Говорит что неправильное использование SELECT

Добавлено через 6 минут
Получился запрос, но работает только отчасти и наверн не знаю, правильно или нет...


SQL
1
2
3
4
query1.SQL.Add('SELECT FIO1,KCH1,NOM1 From v201103 WHERE (FIO1 in (SELECT FIO1 from v201103 t '+
'GROUP BY t.FIO1 HAVING COUNT(t.FIO1)>1)) and (SHI1 in (''56022'',''56023'',''56024'',''56025'',''56027''))'+
' and (KCH1 in (SELECT KCH1 from v201103 g '+
'GROUP BY g.KCH1 HAVING COUNT(g.KCH1)>1)) and (NOM1=NOM1) ORDER BY FIO1');
Может, сейчас есть от чего отталкиваться, укажите на ошибки плиз!
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 4
15.06.2012, 21:03 8
Оконные функции (аналог аналитических в oracle и сворованных у них же) типа "over (partition by)" появились начиная с sql 2005, у тебя наверное ниже версия. Поэтому и не работает твой запрос. Но он немного неверен нужно написать что-то типа:
T-SQL
1
2
3
4
5
6
7
8
9
select Запрос.* from
(select
  Поле1,
  Поле2,
  Поле3
  row_number() over (partition by Поле1, Поле2, Поле3 order by Поле1) as Кол,
  Поле4
from Table1) as Запрос
where Запрос.Кол > 1;
Заметьте!!! - не используется группировок в принципе (скорость!).
Преимущества этого способа еще и в том, что кроме получения повторяющихся строк мы можем получить в итоговой выборке еще в придачу сколько раз каждый из них повторяется!
Если же у вас версия скуля ниже, тогда старый дедовский способ с использованием функции count:
T-SQL
1
2
3
4
select
  Поле1, Поле2, Поле3, Поле4
from Table1
where (Поле1,Поле2,Поле3) in (select Поле1,Поле2,Поле3 from Table1 groyp by Поле1,Поле2,Поле3 having count(*) > 1).
(либо join к ней же)
Скорость работы понятна: два раза выполняется тот же запрос (а если это не просто таблица, а результат какого-то запроса у которого нет индексов!), скорость будет падать в прогрессии в зависимости от сложности исходного набора данных!
Недостатки второго метода на лицо!
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
15.06.2012, 21:36 9
Цитата Сообщение от typeharley Посмотреть сообщение
Оконные функции (аналог аналитических в oracle и сворованных у них же)
Что Вы несёте?
Аналитические функции появились в стандарте ANSI SQL-1999.
Реализация стандарта - это воровство, да?
И в Orace они появились в соответствии с этим стандартом.
0
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 4
17.06.2012, 13:57 10
iap - по теме вопроса добавить нечего, да? Тогда зачем тут разглогольствовать на тему, не относящуюся к теме. Перед тем как что-либо писать и обвинять людей в том, что они 'несут', сначала разберитесь: по ссылке http://ru.wikipedia.org/wiki/%... 0%B8_(SQL) на первой же строке написано черным по белому: Аналитические функции появились в версии Oracle 8.1.6. и являются расширением SQL. Эти расширения сейчас изучаются комитетом ANSI SQL с целью включения в спецификацию языка SQL.

Но если бы вы были немного внимательнее, то я конкретно говорил, что касательно t-sql, про ОКОННЫЕ функции, которые отличаются от классических аналитических функций того же t-sql.
0
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
17.06.2012, 14:24 11
Цитата Сообщение от typeharley Посмотреть сообщение
сначала разберитесь: по ссылке http://ru.wikipedia.org/wiki/%... D0%B8_(SQL) на первой же строке написано черным по белому: Аналитические функции появились в версии Oracle 8.1.6. и являются расширением SQL.
почитай вот это - http://ru.wikipedia.org/w/inde... id=4994976
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,269
17.06.2012, 14:53 12
Цитата Сообщение от typeharley Посмотреть сообщение
iap - по теме вопроса добавить нечего, да? Тогда зачем тут разглогольствовать на тему, не относящуюся к теме. Перед тем как что-либо писать и обвинять людей в том, что они 'несут', сначала разберитесь: по ссылке http://ru.wikipedia.org/wiki/%... 0%B8_(SQL) на первой же строке написано черным по белому: Аналитические функции появились в версии Oracle 8.1.6. и являются расширением SQL. Эти расширения сейчас изучаются комитетом ANSI SQL с целью включения в спецификацию языка SQL.

Но если бы вы были немного внимательнее, то я конкретно говорил, что касательно t-sql, про ОКОННЫЕ функции, которые отличаются от классических аналитических функций того же t-sql.
Стало быть, это ANSI стырил аналитические функции у Oracle? Феерично! Дальше ехать некуда!
Теперь каждый, кто придерживается стандарта, ворует у Oracle!
Бред!
И хватит уже свой Oracle везде тыкать! Зачем он в форуме по MS SQL?
0
17.06.2012, 14:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2012, 14:53
Помогаю со студенческими работами здесь

Выборка записей с 3мя цифрами
Здравствуйте Есть такая задача, нужно вывести книги из таблицы в названии которых есть как минимум...

Вывод записей первой таблицы, которых нет во второй (таблицы отличаются набором столбцов и строк)
Есть таблица Недвижимость (код недвижимости, город, адрес, кол-во комнат, площадь) и есть таблица...

Запретить добавление одинаковых записей
Люди хотела уточнить один вопрос есть таблица с данными первичный ключ все дела. Но встал вопрос об...

Выборка записей о покупке/продаже мебели
Доброго времени суток, уважаемые форумчане! Так вышло, что появилась необходимость решить одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru