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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2014, 01:50   #1
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

вот такая ошибка -
#1044 - Access denied for user 'ddd' to database 'ddd'

на создание обычной процедуры.

Что посоветуете сделать? в не процедуры вообще ошибки валятся. И ничего не хочет декларироваться
А мне нужен SQL код с курсорами и DECLARE. в не процедуры никак не хочет декларироваться.

А задача стала простая - нужен цикл в SQL коде. как не крутил сложным SQL запросом без цикла задача не решается.

Код:
DELIMITER $$

CREATE PROCEDURE curdemo()
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE a CHAR(16);
  DECLARE b, c INT;
  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
  DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

  OPEN cur1;
  OPEN cur2;

  read_loop: LOOP
    FETCH cur1 INTO a, b;
    FETCH cur2 INTO c;
    IF done THEN
      LEAVE read_loop;
    END IF;
    IF b < c THEN
      INSERT INTO test.t3 VALUES (a,b);
    ELSE
      INSERT INTO test.t3 VALUES (a,c);
    END IF;
  END LOOP;

  CLOSE cur1;
  CLOSE cur2;
END;
Приходит мысль что не обязательно все решать средствами только SQL
раз Update работает без проблем.
То цикл и процедуры можно сделать через PHP и на выполнение отправлять только Update запрос.

У кого-нибудь есть мысли как это сделать только SQL кодом

Цель - пройтись по базе таблице и выполнить на каждой строке Update запрос.
Из этого пока не получается сделать один сложный Update запрос

Смотрите

Код:
UPDATE post_table
SET `top`=`top`+1
Where post_id=(SELECT ID)
(SELECT ID) - здесь селект который выдает таблицу ID

ошибка стандартная

Код:
#1242 - Subquery returns more than 1 row
Как переиграть скрипт чтобы создать сложный запрос на UPDATE ?
с циклом внутри SQL пока проблемы. но если что предложите попробую потестить.

Нашел рабочий код без курсоров

Код:
DELIMITER $$ CREATE DEFINER=`root`@`%` 
PROCEDURE `yearly_streak`() 
begin declare cur_year, max_year, min_year int; 
select max(year), min(year) from lakers into max_year, min_year; 
DROP TEMPORARY TABLE IF EXISTS yearly_streak; 
CREATE TEMPORARY TABLE yearly_streak (season int, streak int, win char(1)); 
set cur_year=max_year; 
year_loop: loop if cur_year<min_year then leave year_loop; end if; 
call streak(cur_year, @l, @s); 
insert into yearly_streak values (cur_year, @l, @s); 
set cur_year=cur_year-1; end loop; select * from yearly_streak; 
DROP TEMPORARY TABLE IF EXISTS yearly_streak; 
END
Для себя и для всех обращу внимание на то что помогло создать процедуру

Код:
DELIMITER $$ CREATE DEFINER=`root`@`%`

Последний раз редактировалось Stilet; 14.12.2014 в 19:56.
Alar вне форума Ответить с цитированием
Старый 13.12.2014, 09:37   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

in есть на такой случай
Код:
UPDATE post_table
SET `top`=`top`+1
Where post_id in (SELECT ID)
для INSERT-a есть вариант: INSERT INTO ... SELECT ... Его попытаться приспособить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.12.2014 в 11:03.
Аватар вне форума Ответить с цитированием
Старый 14.12.2014, 19:12   #3
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
in есть на такой случай
Код:
UPDATE post_table
SET `top`=`top`+1
Where post_id in (SELECT ID)
для INSERT-a есть вариант: INSERT INTO ... SELECT ... Его попытаться приспособить
Огромное спасибо. IN то что надо - отлично выполнился Update по массиву ID выбранных через несколько SELECT и даже с ипользованием Left Join
Alar вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не отображаются данные в таблице (запрос sql) leobrn Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 14.12.2013 13:51
sql запрос к таблице wmjaqa SQL, базы данных 3 13.03.2013 12:23
SQL запрос в цикле Aza-Zel Работа с сетью в Delphi 5 15.08.2012 14:47
SQL запрос к dbf таблице betirsolt БД в Delphi 18 27.07.2011 13:04
автоматическое обновление таблице через запрос sql eda Microsoft Office Excel 8 19.04.2011 12:47