Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> занести значения в разные строки 
:(
    Опции темы
KoLiZeI
Дата 20.3.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Народ подскажите можно ли занести одним запросом значения сразу в несколько строк
Допустим есть таблица 
<название> <Значение>
название1    Значение1
название2    Значение2
название3    Значение3
название4    Значение4

Нужно обновить значения во всех  полях, нужно вызывать UPDATE для каждого поля, или можно сделать одним запросом? smile 
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 20.3.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(KoLiZeI @  20.3.2008,  11:51 Найти цитируемый пост)
Нужно обновить значения во всех  полях, нужно вызывать UPDATE для каждого поля, или можно сделать одним запросом?

Ответ зависит от того, как именно задано, что и где надо обновлять


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
KoLiZeI
Дата 20.3.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



В каком смысле?
Строки заданы в виде название->значение
Таких строк N
Допустим что значения из этих строк выводятся в форме и при нажатии Сохранить эти строки должны обновиться, точнее 1 поле в кажой строке! 
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 20.3.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



и как БД "догадается", в каких записях какие значения вставлять?
нет, тебе надо прописывать явно. другой вопрос, что SQL-запрос можно сгенерировать, а не указывать руками все возможные сочетания 
"имя+значение"
PM MAIL   Вверх
Akina
Дата 20.3.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Тогда по 1 запросу на каждую запись.
Вот если бы на сервере была таблица соответствия обновлений - обошелся бы одним запросом.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
nbsp
Дата 10.4.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.7.2007

Репутация: нет
Всего: нет



мой случай:

есть таблица (mytable):

<id>   <count>
  1          10
  4           5
  5          55
  9          11

допустим, через форму передаются значения id и новые значения count.
хотелось бы одним запросом обновить значения, сгенерировав запрос.

это "псевдо синтаксис", естественно он НЕ рабочий (взято у человека с аналогичной задачей):

UPDATE mytable SET count = '111, 333, 777, 222' WHERE id = '1, 4, 5, 9'

Возможно ли сделать подобное?

Это сообщение отредактировал(а) nbsp - 10.4.2008, 16:12
PM MAIL   Вверх
Akina
Дата 10.4.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Нет.
Однако можно обойтись двумя запросами.
Создаешь временную таблицу той же структуры (в принципе это третий запрос), и потом insert into temp_table(id, val) values (...) и затем update из этой временной таблицы.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
nbsp
Дата 10.4.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.7.2007

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
mishaSL
Дата 10.4.2008, 16:19 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 54



nbsp, можно одним запросом, к примеру так:
Код

UPDATE mytable
SET count = CASE id
   WHEN 1 THEN 111
   WHEN 4 THEN 333
   WHEN 5 THEN 777
   WHEN 9 THEN 222
END
WHERE id IN(1, 4, 5, 9)



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Feldmarschall
Дата 10.4.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



только опять же непонятно - зачем.
PM   Вверх
mishaSL
Дата 10.4.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 54



Цитата(Feldmarschall @  10.4.2008,  17:13 Найти цитируемый пост)
только опять же непонятно - зачем. 

Пример, который я привел, использую когда необходимо обновить сразу несколько записей и при этом известно их ID. К примеру, обновление порядка следования пунктов меню или других элементов.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Feldmarschall
Дата 10.4.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



ну, я не к тебе лично, а вообще к повторяющейся уже в который раз суете "одним запросом".
точно так же обновление порядков можно сделать двумя последовательными, и ничего не случится.
PM   Вверх
nbsp
Дата 10.4.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.7.2007

Репутация: нет
Всего: нет



mishaSL, большое спасибо за ваш вариант, всё отлично работает.

Feldmarschall, приведите, пожалуйста, ваш вариант запроса.

Это сообщение отредактировал(а) nbsp - 10.4.2008, 20:52
PM MAIL   Вверх
Feldmarschall
Дата 10.4.2008, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



nbsp, если из моих слов вариант непонятен, то приводить его тем более смысла нет.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0849 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.