Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вытащить данные без повторов


Nic ©   (2007-09-20 01:16:00) 

Доброго времени суток, уважаемые мастера!

Допустим, есть 3 таблицы

1. Поток
idPotok
...

2. Таблица-связка
idPotok
idGruppa

3. Группа
idGruppa
...

Как сделать такой запрос, который бы удалял или не отображал все повторяющиеся потоки с одинковым составом групп? Изучаю SQL совсем недавно, поэтому пока не получается сообразить как это сделать. Уже часа 2 пытаюсь рещить задачу, никак не получается.. :(


Anatoly Podgoretsky   (2007-09-20 21:37:00) [1]

> Nic  (20.09.2007 21:26:16)  [16]

Ты разберись с предметной областью, решение в ней.


Nic   (2007-09-20 21:26:00) [2]

Всем спасибо за советы. Буду пробовать :)


Anatoly Podgoretsky   (2007-09-20 21:01:00) [3]

Кстати если группа может быть связано только с одним потоком, то уникальный индекс только по полю группа решит проблему. И тогда не надо ставить уникальный индекс по обеим полям. Но это только в том случае если не используется история групп и потоков.


Anatoly Podgoretsky   (2007-09-20 20:45:00) [4]

> Nic  (20.09.2007 20:40:13)  [13]

Ну минимум то, в виде индексов, можно сделать, перекроет большую часть проблем и не потребует переделки программ.


Nic   (2007-09-20 20:40:00) [5]

А не меняя структуру базы нельзя реализовать сабж? Очень много разработок висит на этой базе -> нет уверенности в том, что всё, что уже внедренно в эксплуатацию будет нормально работать


Anatoly Podgoretsky   (2007-09-20 16:04:00) [6]

Это да, но у него неверное определение модели, не та связь. Просто пусть удалит эту не нужную таблицу, а в таблице групп, пусть введет поле idpotok


Sergey13   (2007-09-20 15:52:00) [7]

> [10] Anatoly Podgoretsky ©   (20.09.07 15:33)
> Не понял что ты имеешь в виду, при уникальном индексе, задвоения просто не будет.
Не будет задвоения пары Поток-Группа, но Группа сможет по прежнему быть в нескольких потоках (если потоков >2 ) одновременно, что судя по [2] нежелательно.


Anatoly Podgoretsky   (2007-09-20 15:33:00) [8]

Не понял что ты имеешь в виду, при уникальном индексе, задвоения просто не будет. Правда по его задаче, эта таблица совсем не нужна, поскольку у него связь не многие ко многим, а один ко многом. Налицо ошибка проектирования.


Sergey13   (2007-09-20 13:58:00) [9]

> [8] Anatoly Podgoretsky ©   (20.09.07 13:43)

Это ничего не изменит в плане нежелательного задвоения групп.


Anatoly Podgoretsky   (2007-09-20 13:43:00) [10]

я бы поставил уникальный индекс на оба поля idPotok и idGruppa, даже не задумываясь об предметной области.


Ega23   (2007-09-20 10:11:00) [11]

Ужос. 2 таблицы "поток" и "группа" должны быть одной, причём с иерархической структурой


Sergey13   (2007-09-20 09:10:00) [12]

> [2] Nic ©   (20.09.07 07:42)
> А лучше удалить из базы один из потоков

Добавь уникальность на группу в таблицу связке.


Nic   (2007-09-20 09:00:00) [13]


> Кщд ©   (20.09.07 07:59) [3]

Как я мог забыть! :) MS SQL Server 2000


> MsGuns ©   (20.09.07 08:13) [4]

ИЛМ базы проектировал не я. На ней завязано большое количество других подсистем (часть из которых уже внедрена), поэтому довольно проблематично менять структуру базы данных.

Да, речь идёт о студенческих группах и потоках.


MsGuns   (2007-09-20 08:13:00) [14]

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

Речь ведь о студенческих группах ?


Кщд   (2007-09-20 07:59:00) [15]

>Nic ©   (20.09.07 01:16)
СУБД?


Nic   (2007-09-20 07:42:00) [16]


> Германн ©   (20.09.07 01:40) [1]

То, что на месте многоточия значения большого не имеет. Там свойства потока и группы соответственно.

Есть группы. Есть потоки. Скаждым потоком связано несколько групп. Например, поток А и поток Б. Если оба содержат грууппы В и Г, то надо отобразить только один из этих потоков. А лучше удалить из базы один из потоков (А или Б).

distinctне знаю. Попробую почитать help. Спасибо.


Германн   (2007-09-20 01:40:00) [17]

Слово distinctне знаешь?
Или не помогает? Тогда приведи текст запроса
И что есть "один аковым составом групп"?

Лучше тут на форуме не использовать многоточия в сабже. Себе же хуже делаешь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо