Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Вниз

Вытащить данные без повторов   Найти похожие ветки 

 
Nic ©   (2007-09-20 01:16) [0]

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

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

1. Поток
idPotok
...

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

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

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


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

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

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


 
Nic ©   (2007-09-20 07:42) [2]


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

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

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

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


 
Кщд ©   (2007-09-20 07:59) [3]

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


 
MsGuns ©   (2007-09-20 08:13) [4]

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

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


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


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

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


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

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

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


 
Sergey13 ©   (2007-09-20 09:10) [6]

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

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


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

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


 
Anatoly Podgoretsky ©   (2007-09-20 13:43) [8]

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


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

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

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


 
Anatoly Podgoretsky ©   (2007-09-20 15:33) [10]

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


 
Sergey13 ©   (2007-09-20 15:52) [11]

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


 
Anatoly Podgoretsky ©   (2007-09-20 16:04) [12]

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


 
Nic ©   (2007-09-20 20:40) [13]

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


 
Anatoly Podgoretsky ©   (2007-09-20 20:45) [14]

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

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


 
Anatoly Podgoretsky ©   (2007-09-20 21:01) [15]

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


 
Nic ©   (2007-09-20 21:26) [16]

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


 
Anatoly Podgoretsky ©   (2007-09-20 21:37) [17]

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

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
15-1197716283
No_Dead
2007-12-15 13:58
2008.01.27
Сбой какой-то


15-1197925136
Petr V. Abramov
2007-12-17 23:58
2008.01.27
а как бы for поменять на


2-1198502186
saNat
2007-12-24 16:16
2008.01.27
Определение разделителя целой/дробной части


15-1198169940
Pazitron_Brain
2007-12-20 19:59
2008.01.27
Решил пользоваться скайп


2-1198423011
batya-x
2007-12-23 18:16
2008.01.27
изменения в реестре





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский