Вопрос: обновление поля | Добавлено: 08.07.07 19:28 |
Автор вопроса: ![]() |
Доброго!
есть трудность запрос на обновление поля в таблице при условии измененности поля другой таблицы: UPDATE Таблица2 SET Число1=1 WHERE Таблица1.Слово is not null не срабатывает. Помогите разобраться пожалуйста |
Ответы | Всего ответов: 26 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #1 | Добавлено: 08.07.07 21:44 |
UPDATE Таблица1, Таблица2 SET Таблица2.Число1=1
WHERE Таблица1.Слово is not null |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 31 |
Профиль | Цитата | #2 | Добавлено: 08.07.07 22:28 |
Большое спасибо, попроббовал, запрос выплдняется, но обновления не происходит. Может дело в том, что поле в Таблице1 - текстовое, во Таблице2 - числовое, т.е. смысл в том, что вводится слово в поле Таблицы1, запускается запрос и в поле Таблицы2 воодится "1" |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #3 | Добавлено: 08.07.07 22:38 |
Была проблема синтаксиса, ее-то решить можно, а что конкретно должен сделать этот запрос с неизвестными мне типами данных, их свойствами, и состоянием данных в базе остается только догадываться. Конкретизируй. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 31 |
Профиль | Цитата | #4 | Добавлено: 09.07.07 09:11 |
Конкретизирую:
две таблицы Таблица1 - в поле Слово заносятся слова Таблица2 - в поле Число заносятся цифры "1" или "0". Соответственно поле Слово - текстовое, поле Число - числовое. Цель запроса - после введения нескольких слов в Таблица1.Слово обновить Таблица2.Число. При этом количество "1" в Таблица2.Число должно быть равно кол-ву слов в Таблица1.Слово Сразу скажу, что этот запрос я пробовал и на связаных (один ко многим) таблицам, и на не связанных - один результат. Запрос выполняется, обновление не происходит. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 31 |
Профиль | Цитата | #5 | Добавлено: 09.07.07 09:26 |
Еще раз попробовал запрос
UPDATE Таблица1, Таблица2 SET Таблица2.Число1=1 WHERE Таблица1.Слово is not null Выяснил следующее: если в таблице2 в поле Число стоит "0", то запрос не выполняется, если не стоит - выполняется. Но при этом проставляется только одна "1", не зависимо от того, сколько слов введено в Таблица1.Слово. Хотя при исполнении запроса пишется , что будут обновлено именно то количество записей, сколько было введено слов в Таблица1.Слово |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 31 |
Профиль | Цитата | #6 | Добавлено: 09.07.07 18:18 |
сделал тот же запрос в конструкторе
вот что получилось UPDATE Таблица1 INNER JOIN Таблица2 ON Таблица1.КодСлова=Таблица2.КодСлова SET Таблица2.Число1 = 1 WHERE (((Таблица1.Слово1) Is Not Null)); та же ерунда - запрос выполняется - поле Число1 не обновляется |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #7 | Добавлено: 09.07.07 20:33 |
UPDATE Таблица1, Таблица2 SET Таблица2.Число1=1
WHERE (Таблица1.Слово is not null) AND (Таблица1.КодСлова=Таблица2.КодСлова); Логика этого запроса на изменение подразумевает что: 1. В [Таблица2] есть поле [КодСлова] и ВСЕ строки этого поля содержат данные. 2. В [Таблица1] есть поле [КодСлова] связанное с [Таблица2].[КодСлова] и [Таблица1].[Слово]заполнено частично. 3. Автор не расчитывает на то, что будет выполнен запрос на добавление. Таблица2 содержит все данные в КодСлова. Попробуй сначала SELECT чтобы увидеть какие данные будут обновлены. SELECT * FROM Таблица1, Таблица2 WHERE (Таблица1.Слово is not null) AND (Таблица1.Слово = Таблица2.Слово); P.S. У тебя Таблица2 случайно не пуста? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 31 |
Профиль | Цитата | #8 | Добавлено: 09.07.07 21:24 |
таблица2 пустая естественно.
Смысл в том, что пользователь должен вводить в Таблицу1 слова, потом запускать запрос на обновление и в аналогичных полях (изначально пустых) Таблица2 должны проставляться "1" столько, сколько будет слов в Таблица1. Можно было бы просто посчитать количество записей в Таблица1, но потом могут возникнуть проблемы с сохранением результатов. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #9 | Добавлено: 09.07.07 21:48 |
таблица2 пустая естественно
Я почему-то так и подумал. Тогда ты выбрал не тот тип запроса. Нужно INSERT INTO. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #10 | Добавлено: 09.07.07 21:58 |
INSERT INTO Таблица2 (Слово, Число1)
SELECT Таблица1.Слово, 1 FROM Таблица1 WHERE Таблица1.Слово Is Not Null; |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 31 |
Профиль | Цитата | #11 | Добавлено: 09.07.07 22:51 |
Спасибо, наверное правильное будет так:
INSERT INTO Таблица2 (Число1) SELECT Таблица1.Слово1 FROM Таблица1 WHERE Таблица1.Слово1 Is Not Null; однако в этом случае выдается транспорант: "Нарушение уникальности ключа" |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #12 | Добавлено: 09.07.07 23:05 |
Ээээ...
Бородатый анекдот: - Можно-ли натянуть кондом на глобус? - А что такое глобус? - Вот с этого мы и начнем урок географии. ... Для какой надобности в таблице2 есть индексированные поля? Для чего вообще таблица2? Какие в ней еще есть поля? Почему потом могут возникнуть проблемы с сохранением результатов
|
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #13 | Добавлено: 09.07.07 23:09 |
INSERT INTO Таблица2 (Число1) SELECT 1 |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 31 |
Профиль | Цитата | #14 | Добавлено: 09.07.07 23:40 |
Хороший анекдот!
написал так INSERT INTO Таблица2 ( Число1 ) SELECT Таблица1.Слово1 FROM Таблица1 WHERE Таблица1.Слово1 Is Not Null все исправилось, однако естественно выбирает записи из Таблица1.Слово1 и копирует в Таблица2.Число1 а надо заменить слова на "1" Чето туплю, куда здесь values (1) вставить? может всеж таки дело в ограничениях, насколько помню есть ограничения в преобразовании между текстовым и числовым полем, ага вот нашел: "Текст может включать только числа и допустимые разделители целой и дробной части для числовых значений и денежных единиц. Число знаков в поле с типом данных «Текстовый» не должно превышать соответствующий размер поля, заданный для типа данных «Числовой»"? Да проблемы будут с пользователем, ему надо чтобы все наглядно было... |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 0 Ответов: 454 |
Профиль | Цитата | #15 | Добавлено: 09.07.07 23:53 |
Подожди, я уже ни чего не понимаю.
Итак: 1. Таблица2 пуста и в ней только одно поле [Число1]. Тогда: INSERT INTO Таблица2 (Число) SELECT 1 FROM Таблица1 WHERE Таблица1.Слово Is Not Null 2. Таблица2 пуста и в ней несколько полей названных также как в таблице1. Тогда: INSERT INTO Таблица2 (Число,Слово,КодСлова) SELECT 1,Слово,КодСлова FROM Таблица1 WHERE Таблица1.Слово Is Not Null |
|