![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вытащить данные без повторов
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не знаешь?
Или не помогает? Тогда приведи текст запроса
И что есть "один аковым составом групп"?
Лучше тут на форуме не использовать многоточия в сабже. Себе же хуже делаешь.