|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.09.2010, 04:58 | #1 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Проверка на уникальность трёх полей
Здравствуйте.
Возникла следующая проблема, есть БД, в ней, конечно же, имеется ключевое поле, однако, в своей задаче я его не использую. Меня уверили, что каждую строку полностью и однозначно определяют три (других) поля, т.е., по сути их можно было бы взять за ключевые. Необходимо проверить, так ли это, т.е. написать запрос, который работал бы примерно так: Num Name...... Obozn GOST .......Primechanie 01.... Реле...... ...А01 gost_5 .......qqwerqwr 02.... Резистор ...H65 gost_4 .......dfdsa 03.... Реле...... ...А55 gost_5 .......Прим 04.... Реле...... ...А01 gost_5 .......Прим 05.... Резистор ...H67 gost_4 .......dfdsa 06.... Резистор ...H67 gost_4 .......dfdsa 07.... Резистор ...H23 gost_4 .......dfdsa ... Выдал строки 01.... Реле...... ...А01 gost_5 .......qqwerqwr 04.... Реле...... ...А01 gost_5 .......Прим и 05.... Резистор ...H67 gost_4 .......dfdsa 06.... Резистор ...H67 gost_4 .......dfdsa т.к. в них значения в тех трёх полях (Name, Obozn, GOST) совпадают. Можно ли это сделать средствами SQL ? Последний раз редактировалось AnTe; 06.09.2010 в 05:06. |
06.09.2010, 08:13 | #2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
да, можно. и даже несложно.
Вот так: Код:
Цитата:
Но, при необходимости можно получить и в том виде, в каком Вы написали.. Надо? Тогда укажите, для какой СУБД нужен запрос. p.s. Чтобы набор полей был уникальным в нормальной СУБД можно (и достаточно) создать уникальный индекс по трём полям. Тогда добавить повтор будет физически невозможно. p.p.s. Упаси Вас Боже использовать естественные ключи в качестве первичного (составного) ключа к таблице. Почитайте на досуге Анатолий Тенцер, Естественные ключи против искуственных ключей Последний раз редактировалось Serge_Bliznykov; 06.09.2010 в 08:16. |
|
06.09.2010, 08:35 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
А сделать уникальный индекс?
Тогда и проверять не придется.
I'm learning to live...
|
06.09.2010, 10:25 | #4 | ||
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
Спасибо!
Цитата:
upd: похоже, разобрался: HAVING count(*)>1 нужно заменить на HAVING CntPovtor > 1 ? сейчас попробую... Проблему я уже решил, скопировав всю базу в текстовый массив (не такая уж и огромная оказалась), и отсортировав самостоятельно, но, возможно, подобные задачи возникнут в ближайшее время, и такой финт не удастся. Цитата:
Последний раз редактировалось AnTe; 06.09.2010 в 10:33. |
||
06.09.2010, 11:04 | #5 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
Цитата:
А, например, рекомендую начать с Мартина Грубера "Понимание SQL" В-третьих, применение SQL это почти всегда самое эффективное и надёжное решение (его для того и придумали). теперь по сути вопроса - запрос делится на функциональные части. В части SELECT указываются выбираемое (это поля/функции/подзапросы и т.д.). При этом для выбираемых значений можно задать имя (алиас) например select Name as TheNameofElectricalDevice from .... в результате запроса будет поле с именем TheNameofElectricalDevice в моём случае я для результата агрегатной функции count(*) задал имя (это может быть любой идентификатор). Это сделано исключительно для удобства/наглядности. Цитата:
Запрос нужно было использовать прямо так, как я написал. Попробуйте. Если будут проблемы - обращайтесь, разберёмся совместно. |
||
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проверка полей TextBox | Ilya_L | Microsoft Office Excel | 3 | 22.06.2010 02:44 |
Access + ADO, проверка ключа на уникальность | KiLLiR | БД в Delphi | 2 | 23.02.2009 10:36 |
проверка полей формы | AIst | PHP | 3 | 10.09.2008 02:59 |
Уникальность индекса в БД | spiteful41 | Помощь студентам | 7 | 27.05.2008 01:26 |
Уникальность по 3 полям | num8er | БД в Delphi | 3 | 09.10.2007 09:54 |