Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2014, 15:12   #1
der90
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 73
По умолчанию sql запрос

Подскажите, как это реализовать

есть таблица (desc, value, name) со строками (Описание, 3, limit; описание, 4, volume; и тд.)..мне нежно обновить для строк с name = limit и volume значение value на 3 и 5 соответственно. Сейчас это реализовано один запрос одна строка. можно ли одним запросом поменять в строках значения value в зависимости от name
der90 вне форума Ответить с цитированием
Старый 02.12.2014, 15:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мне нежно обновить
"И тихонечко соплю в ушко"
Цитата:
можно ли одним запросом
Я не очень понял как зависит значение value от name.
Какая связь между таблицами?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.12.2014, 15:17   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
UPDATE таблица SET value=5 WHERE name = 'limit' AND  value=3
Цитата:
Какая связь между таблицами?
То таблицы? Решил, что поля
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.12.2014 в 15:19.
Аватар вне форума Ответить с цитированием
Старый 02.12.2014, 15:32   #4
der90
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 73
По умолчанию

есть данные

$array = array('limit' => 4, 'volume' => 3, ... );

далее нужно залить их в бд таблица
desc | value | name
со значениями
описание | 3 | limit
описание | 4 | volume
... и тд

далее я ее обновляю таким образом
PHP код:
     foreach($array as $k=>$v)
{
        
$sql_q "update  table set `value` = :VALUE where `name` = :NAME";
        
$st C::$query->prepare($sql_q);
        
$st->bindValue(":NAME"$kPDO::PARAM_STR);
        
$st->bindValue(":VALUE"$vPDO::PARAM_INT);
        
$st->execute();


и получается сколько значений столько и запросов...вот я спрашиваю возможно ли обновлять несколько строк одним запросом подставляя разные значения.

Последний раз редактировалось der90; 02.12.2014 в 15:36.
der90 вне форума Ответить с цитированием
Старый 02.12.2014, 15:43   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Во временную таблицу загнать и одним запросом. MySQL по-моему и в памяти позволяет временные таблицы создавать. Или запрос динамически формировать
Код:
SET value = CASE WHEN  name = 'limit' THEN 5 WHEN ...
WHERE name IN ('limit','volume',...)
Это что касается срелств sql. Что пхп за имеет ввиду по этому поводу хз
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.12.2014 в 15:49.
Аватар вне форума Ответить с цитированием
Старый 02.12.2014, 15:46   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А можно поинтересоваться почему такая задача встала?
Обычно такое сложное обновление либо говорит о неверном проектировании БД либо о апгрейде ПО до некой версии, требующей такую зависимость.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.12.2014, 10:23   #7
der90
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 73
По умолчанию

Это необходимо для создания настраиваемых модулей, где в таблице, name - это атрибут модуля со значением value, каждый модуль имеет свои таблицу именно такого вида, меняется лишь количество строк( атрибутов) в таблице
der90 вне форума Ответить с цитированием
Старый 03.12.2014, 10:48   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы наверное не делал так вообще, но если бы мне досталась такая ПОшка оставил бы вариант с обновлением в цикле, или написал ХП с FETCH внутри, чтоб цикл вынести в БД совсем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос Rockot PHP 6 25.02.2014 19:04
запрос sql s2dentishe БД в Delphi 2 24.05.2010 01:15
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15