Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
Добрый день. помогите пожалуйста с запросом есть таблица следующего вида Код: plaintext 1. 2. 3. код название група цена задача запроса : найти данные в CDETALLE до первого пробела и перенести эти данные в CCODFAM т.е. в конце должно выйти Код: plaintext 1. 2. 3. я написал запрос код SQL Код: plaintext и не работает... отдельно работают оба запроса а вместе состыковать не могу. помогите плз ошибка которую мне выдает "single-row subquery returns more than one row", я удалил все поля кроме одного и сработало! как теперь сделать для более чем одного поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2007, 17:47 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
Дело не в количестве полей. А втом, что Ваш подзапрос, с помощью которого Вы обновляете значение (справа от знака равенства) выдает больше, чем одно значение для обновления. Из-за этого ошибка. Необходимо уточнить подзапрос, накладывая дополнительное условие, например, уникальный идентификатор той записи, которую Вы обновляете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 11:02 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
Если в таблице articulo есть поле с уникальными значениями, для примера с именем ID, можно попытаться такой запрос: UPDATE articulo tab1 SET CCODFAM = (select SUBSTRING (CDETALLE, 1, POSITION (' ' IN CDETALLE)) FROM articulo WHERE CCODFAM = 'ALCOL' AND tab1.ID= articulo.ID) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 11:55 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
может я что - то не понимаю, но мне нужно обновить таблицу, а не отдельно взятое поле, т.е. Код: plaintext 1. 2. 3. 4. должно превратиться в Код: plaintext 1. 2. 3. 4. а так, насколько я понял обновление пройдет для 1 конкретного поля? счас пойду пробовать.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 12:38 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
и еще поле CREF (код товара) является уникальным вот это место UPDATE articulo tab1 SET CCODFAM я не очень понял ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 12:47 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
С помощью приведенного запроса обновляется не отдельная запись, а вся таблица. А добавленное условие позволяет для обновления поля CCODFAM каждой записи использовать часть значения поля CDETALLE, взятое из той же записи, которая обновляется. Единственное замечание, что я работаю с Oracle. Напишите, что у Вас получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 12:50 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
В запрос добавлено условие, чтобы для обновления одного поля записи использовалась подстрока другого поля, но той же записи. Запрос работает с одной таблицей – ее обновляет и ее же использует для получения обновляющих значений. Фактически дополнительное ограничение в подзапросе имеет смысл articulo.CREF(обновляемой таблицы)= articulo.CREF(таблицы, из которой берутся значения для обновления). Поскольку СУБД должна различать эти таблицы в условии запроса, для одной из таблиц вводится псевдоним tab1 (наименование любое, в рамках допустимого). Такое переименование носит временный характер и не влечет за собой изменения наименования таблицы в БД. В Oracle такие запросы проходят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:04 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
сейчас попробую и напишу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:11 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
нет ...не идет никак...пишет синтактическая ошибка - на tab1 видимо это только в Оракле проходит.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:31 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
Жаль, что не получилось. Может что еще подскажут спецы по DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 13:39 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
ок ( попробуем поменять условие если такое же условие но в MySQL?? может быть так кто-то подскажет... или мне теперь новую тему открывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 15:44 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вы, вообще, с db2 работаете? Если да, то укажите версию. Спрашиваю, потому что: 1. Функции substring в том виде, каком вы написали, нет в db2. 2. "single-row subquery returns more than one row" - оракловое сообщение об ошибке. И задачу уточните: вам надо по всей таблице update сделать или только по тем записям, где ccodfam='ALCOL'? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 15:57 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
Вы, вообще, с db2 работаете? Если да, то укажите версию. Спрашиваю, потому что: 1. Функции substring в том виде, каком вы написали, нет в db2. 2. "single-row subquery returns more than one row" - оракловое сообщение об ошибке. И задачу уточните: вам надо по всей таблице update сделать или только по тем записям, где ccodfam='ALCOL'? сложный вопрос ))) на самом деле ситуация такова: - я пишу Java - программу для обработки dbf файла. данное сообщение - сообщение Java-компилятора dbf файл формируется программой складского учета. это DBF IV (на всяк я приложил файл) да update нужно сделать с учетом условия. з.ы. я уже и в MySql перегнал для простоты жизни и все то же самое - по отдельности запросы работают, а вместе нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 16:43 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
c.Smoletможет я что - то не понимаю, но мне нужно обновить таблицу, а не отдельно взятое поле, т.е. Код: plaintext 1. 2. 3. 4. должно превратиться в Код: plaintext 1. 2. 3. 4. а так, насколько я понял обновление пройдет для 1 конкретного поля? счас пойду пробовать.... update table set ccodfam = ccodfam || '/' || substr(cdetalle, 1, charat(' ', cdetalle)) where ccodfam = 'ALCOL' зы. сам не пробовал, но по идее должно быть вот так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 18:43 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
Почти все получилось!!! Код: plaintext 1. 2. оказывается надо было таблицу в SUBSTRING_INDEX прописать.... единственное, что так и не получается это добавить надпись варианты типа Код: plaintext 1. или Код: plaintext 1. не идут, прописывается 0 и в первом и втором случае... что подскажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 19:45 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
SUBSTRING_INDEX( datos. CDETALLE, ' ', 1 ) datos. - это я жирным сделать хотел :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 19:48 |
|
||
|
запрос UPDATE в dbf
|
|||
|---|---|---|---|
|
#18+
супер! работает все и в dbf и в MySql соответственно получилось MySql Код: plaintext 1. 2. dbf Код: plaintext 1. 2. главное в SUBSTRING прописывать имя таблицы и все будет ок. всем спасибо за советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2007, 12:26 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34921586&tid=1604222]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 306ms |

| 0 / 0 |
