Sql запрос. Откинуть одинаковые записи

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет! Такая вот штука, две таблицы. В одной список фамилий в другой список кредитов каждого ФИО, т.е у одного ФИО может быть не один кредит. Нужно сделать sql запрос по второй таблице в котором увидим все фамили в одном экземпляре, а не по две фамилии одинаковые, если у него два кредита. Ваще такое реально?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

В SQL можно вытащить любой срез данных.

1) select distinct(name) from .... where ....
2) select name,
count(credit) as numberOfCredits
from .... where ....
group by name having numberOfCredits > 0
2B OR NOT(2B) = FF
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

3) select * from первая_таблица
where exists(select * from кредиты where кредиты.fk=первая_таблица.pk)

Т.е., в переводе с SQL на русский: выбрать людей у которых существует хоть один кредит. (вместо fk и pk - указываются поля, по которым связаны таблицы)

Есть и другие варианты.

Выбирать надо тот, который работает быстрее.
Какой работает быстрее оценить можно зная, какой SQL-сервер, какова структура таблиц, какие есть индексы.
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

&quot писал(а):select distinct(name) from .... where ....
СУПЕР! Работает!
&quot писал(а):select * from первая_таблица
where exists(select * from кредиты where кредиты.fk=первая_таблица.pk)
Этот тоже работает, но не в моем случае ;) У меня струкртура связей чуток не такая, а так тоже СПАСИБО!!!
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

а теперь нужно наоборот :) показать только те записи у которые более 1-ого кредита :) а остальные убрать :)
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

есть такая таблица: в ней есть район, фио, номер кредита. структура следующая:
альменево/фио1/номерх
альменево/фио1/номерy
альменево/фио2/номерz
альменево/фио3/номерs
варгаши/фио4/номерv
варгаши/фио4/номерk
варгаши/фио5/номерl

номера кредитов уникальны. нужен запрос который дал бы все фио(без повторений) по отдельному району, и второй запрос который дал бы все номера кредитов по району
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

т.е. в данном примере по первому запросу я должен получить данные например по Альменево следующие:
ФИО1
ФИО2
ФИО3
по второму запросу данные
номерx
номерy
номерz
номерs
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

ты задавать хочешь район что-ли?

кстати переношу в Sql
Изображение
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

select distinct fio from mytable where district='Альменево' group by fio
И то же самое с номерами вместо fio
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить