![]() |
|
|
![]()
|
|
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: нет Всего: 16 |
Суть такая. Есть таблица сопоставлений двух других таблиц:
GROUP BY почему-то не работает Как сконструировать такой запрос? Это сообщение отредактировал(а) Softaz - 4.3.2006, 10:34 -------------------- Разочарованный в .NET |
|||
|
||||
| Vas |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Вот так можно:
Добавлено @ 11:05
ID из запроса убери и будет GROUP BY нормально работать, он группирует одинаковые строки, а в твоем запросе они разные из-за ID. -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
||||
|
|||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
вот так можно удалить все строки которые дублируются:
но перед удалением строк, просто запомни ту строку которую нужно оставить и после удаления сделай инсерт этой строки. да, СУБД указал бы хоть... Это сообщение отредактировал(а) DimW - 4.3.2006, 11:56 |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: нет Всего: 16 |
Vas
Спасибо. Работает. DimW СУБД -- ACCESS но перед удалением строк, просто запомни ту строку которую нужно оставить и после удаления сделай инсерт этой строки. Это уже "попахивает" циклами. Таблица соответствий уже состоит из ~20000 записей и обещает расширяться. Вопрос решен. Всем большое спасибо. -------------------- Разочарованный в .NET |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
мда, тупонул.....
хорошая штука - автоинкремент!!! Vas, респект!!! |
|||
|
||||
| AKN |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.11.2005 Репутация: нет Всего: нет |
Господа, проблема собственно схожая - нужно абдейдить записи поля, которые начинаются на "_[значение]" на просто "[значение]" - возможно это сделать средствами SQL или крутить в цикле. Таблица парадоксовская, записей около 3000. Спасибо
|
|||
|
||||
| Softaz |
|
||||||||||||||||||||||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: нет Всего: 16 |
AKN, используй регулярные выражения. Вот статья. Не помню, откуда взял, тк что привожу здесь.
3.3.4.7 Сравнение по шаблонам В MySQL реализовано стандартное для SQL сравнение по шаблонам, а также особый тип такого сравнения - он основан на использовании выражений, подобных применяющимся в служебных программах Unix (таких, как vi, grep и sed). В SQL при сравнении по шаблону символ `_' обозначает любой одиночный символ, а `%' - определенное количество символов (включая ноль символов). В MySQL в SQL-шаблонах по умолчанию не учитывается регистр символов. При работе с шаблонами SQL использование операторов = или <> не допускается, вместо этого применяются операторы сравнения LIKE или NOT LIKE. Найти все имена, начинающиеся с `b', можно следующим образом:
Найти все имена, заканчивающиеся на `fy', можно следующим образом:
Найти все имена, содержащие `w', можно следующим образом:
Найти все имена, содержащие ровно пять символов, можно при помощи шаблонного символа `_':
Во втором типе шаблонов, предусмотренных в MySQL, используются расширенные регулярные выражения. При поиске совпадений на основе такого шаблона шаблоном нужно пользоваться операторами REGEXP и NOT REGEXP (или их синонимами - RLIKE и NOT RLIKE). Ниже приведены некоторые характеристики расширенных регулярных выражений: `.' обозначает любой символ. Класс символов `[...]' обозначает любой из символов в скобках. Например, `[abc]' обозначает `a', `b' или `c'. Набор символов можно обозначить с помощью дефиса. `[a-z]' обозначает любую букву нижнего регистра, а `[0-9]' - любую цифру. `*' обозначает ноль или более экземпляров символа, стоящего перед ним. Например, `x*' обозначает любое количество символов `x', `[0-9]*' обозначает любое количество цифр, а `.*' - любое количество любых символов. Для шаблона выдается совпадение, если поисковый контекст обнаружен в любой из частей значения, в котором производится поиск (для шаблонов SQL совпадение выдается только в случае, если совпадает все значение). ``Закрепить'' шаблон так, чтобы проверять совпадения с началом или концом значения можно с помощью символов `^' (начало) или `$' (конец), которые располагаются в начале или в конце шаблона соответственно. Чтобы продемонстрировать работу регулярных выражений, приведенные выше запросы LIKE здесь переписаны с использованием REGEXP. Найти все имена, начинающиеся с `b', можно при помощи символа `^', привязывающего шаблон к началу имени:
В версиях MySQL до 3.23.4 REGEXP учитывает регистр символов, и приведенный запрос не возвратит никаких результатов. Для поиска символов `b' верхнего или нижнего регистра воспользуйтесь следующим запросом:
Начиная с версии MySQL 3.23.4, заставить REGEXP учитывать регистр символов можно с помощью ключевого слова BINARY. В этом запросе положительный результат поиска будет получен только при обнаружении символа 'b' нижнего регистра в начале имени:
Найти все имена, заканчивающиеся на `fy', можно при помощи символа `$', привязывающего шаблон к концу имени:
Найти все имена, содержащие символ `w' любого регистра, можно так:
Поскольку регулярное выражение выдает положительный результат при совпадении шаблона с любым фрагментом значения, в приведенном выше примере привязывать поиск к любому из концов имени для сравнения полного значения с шаблоном, как это пришлось бы делать для шаблона SQL, не нужно. Найти все имена, содержащие ровно пять символов, можно, если привязать поиск к началу и концу имени с помощью символов `^' и `$' и поставить пять символов `.' между ними:
Предыдущий запрос можно записать и при помощи оператора `{n}' (``повторить-n-раз''):
Это сообщение отредактировал(а) Softaz - 18.3.2006, 20:26 -------------------- Разочарованный в .NET |
||||||||||||||||||||||
|
|||||||||||||||||||||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |