Страница: 1 |
Страница: 1 |
Вопрос: Запрос-удаление в mdb
Добавлено: 29.08.05 12:41
Автор вопроса: neptoon
База mdb. Имеется большая таблица tablica1, эти поля в ней и указанные значения:
code fio
101101 Иванов Иван
101101 Петров Петр
101102 Сидоров Сидор
... ...
201101 Подберезовик Анна
201101 Дубовик Елена
201102 Подлистная Марина
... ...
Надо удалить строки по коду значения 101101 и т.д. (запрос можно из access), пишу:
delete * from tablica1
where code='101101' or '201101'or '...';
Оказалось для кода присвоено несколько человек и само собой удаляет их всех.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
neptoon
Вопросов: 1
Ответов: 3
Профиль | | #1
Добавлено: 29.08.05 12:43
А требуется удалить только 101101 Иванова и 201101 Дубовик. Спасибо!
Номер ответа: 2
Автор ответа:
Денис
ICQ: 109593029
Вопросов: 15
Ответов: 32
Профиль | | #2
Добавлено: 29.08.05 12:51
Попробуй "delete from tablica1 where code=101101 or code=201101"
Если поле code имеет текстовый формат, то условие надо взять в '101101' или '201101'
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 29.08.05 13:23
Если первичный ключ повторяется, то нафиг такой первичный ключ. Удалить всё поле нафиг.
А если это не первичный ключ, то не надо искать только по нему. Придётся по всем полям сразу (что, впрочем, не гарантирует удаления нужных, ибо однофамильцы сразу всё портят).
Посему можешь пока (если знаешь, что однофамильцев нет) сделать условие типа (code=101101 AND name='Иванов') OR (code=201101 AND name='Дубовик'). Но лучше всё переделать так, чтобы первичный ключ был, и был уникален.
Прочитай тот код, что уже пробовал автор вопроса. Там, внизу его постинга.
Номер ответа: 4
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #4
Добавлено: 29.08.05 15:01
Да, без уникального поля тяжеловато. Если тебе все равно какая из дублирующих записей останется, а какая удалится, то можно еще что нибудь придумать. Что то вроде
"delete from tablica1 where code in (select top 1 code from tablica1 where code=101101 or code=201101)"
Это так, что первое подумалось, не проверял.
Номер ответа: 5
Автор ответа:
neptoon
Вопросов: 1
Ответов: 3
Профиль | | #5
Добавлено: 29.08.05 15:07
Наверно меня не поняли Просто изначально на работе кто-то индивидуальным кодам присвоил разные фио. Я имел ввиду как перекрестно проверить код и фио, и при совпадении удалить эту строку в таблице.
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 29.08.05 16:16
А как узнать, какая из двух должна остаться?
Номер ответа: 7
Автор ответа:
neptoon
Вопросов: 1
Ответов: 3
Профиль | | #7
Добавлено: 29.08.05 16:38
Просто мне дали код и ФИО и сказали их удалить из таблицы. Требуется более расширенный выбор при поиске как по code, так по fio для последующего удаления. Т.е. если найден в поле code='101101' и к нему в сопоставимо в строке поле fio='Иванов Иван', то эту строку удалить из таблицы.
Номер ответа: 8
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #8
Добавлено: 29.08.05 17:19
На бумажке что ли дали? С файлом (даже .txt было бы проще). И GSerg тебе кажется уже ответил в третьем посте.