powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Множественный Select и Update
17 сообщений из 17, страница 1 из 1
Множественный Select и Update
    #40092989
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Надо бы после запроса, который возвращает множество, сделать Update по фильтру полученному из этого множества, построчно.
Сделал процедуру, но с MySQL не очень дружу, больше с FireBird

с FireBird как то проще, FOR SELECT INTO DO BEGIN "чего хочу" END

А тут обязательно курсоры ?
без них можно ?
и если можно, то только COUNT делать перед SELECT и циклом ?

Как серверу попроще будет ?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`()
BEGIN

DECLARE  STR_IBLOCK_ELEMENT_ID Integer;
DECLARE  STR_ID Integer;
DECLARE  STR_VALUE double;
DECLARE  TXT_VALUE varchar(20);
Declare done integer default 0;
DECLARE curs CURSOR FOR SELECT 
    IBLOCK_ELEMENT_ID, VALUE
FROM
    bitrix_66.b_iblock_element_property
WHERE
    IBLOCK_PROPERTY_ID = '310' ;
    
 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
 
 Open curs;



REPEAT

FETCH curs INTO STR_IBLOCK_ELEMENT_ID , STR_VALUE;
 IF NOT done THEN  
 
set	STR_VALUE :=  STR_VALUE * 5;

/*set	TXT_VALUE := concat(convert(STR_VALUE,char), ' руб');*/



UPDATE bitrix_66.b_iblock_element_property VALUE 
SET 
    VALUE = STR_VALUE
WHERE
    IBLOCK_PROPERTY_ID = '173'
        AND IBLOCK_ELEMENT_ID = STR_IBLOCK_ELEMENT_ID;
        
end if;
UNTIL done END REPEAT;


Close curs;


END
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093002
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формулируйте собственно задачу, а не только свои попытки её решить.

Выложите: пример исходного состояния данных (CREATE TABLE + INSERT INTO, десяток записей), требуемое конечное состояние, и подробные пояснения.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093003
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Формулируйте собственно задачу, а не только свои попытки её решить.

Выложите: пример исходного состояния данных (CREATE TABLE + INSERT INTO, десяток записей), требуемое конечное состояние, и подробные пояснения.


Выше сформулировал.
Отбор записей в таблице по поиску ID с столбце IBLOCK_PROPERTY_ID

Обновление записей с фильтром на IBLOCK_ELEMENT_ID. ID для фильтра берётся из запроса Выше, а там множество.

Нету там никаких CREATE TABLE + INSERT INTO, это коробочный битрикс - пакетное изменение того, что есть, по ID.
ID нашел по каким фильтровать. Теперь надо изменить данные.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093019
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Queen
Нету там никаких CREATE TABLE + INSERT INTO, это коробочный битрикс

Ну не надо ерунды-то говорить. Если Вы в коде обращаетесь к MySQL и работаете с его таблицами, то таблицы - есть, а у них соответственно есть код их создания. И данные там есть - Вы же их получаете и изменяете. Вот и выгрузите - структуру да пяток записей.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093033
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Queen
Нету там никаких CREATE TABLE + INSERT INTO, это коробочный битрикс

Ну не надо ерунды-то говорить. Если Вы в коде обращаетесь к MySQL и работаете с его таблицами, то таблицы - есть, а у них соответственно есть код их создания. И данные там есть - Вы же их получаете и изменяете. Вот и выгрузите - структуру да пяток записей.


а это, а смысл (но если так надо, могу выложить - просто не пойму как это поможет решить вопрос)

вопрос был про множественный селект и апдейт после него.
пример кода, рабочего, представлен. Вчера вечером намасянил его как мог.
не устраивают курсоры - можно без них ?
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093046
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Queen
пример кода, рабочего, представлен.

Да это [censored], a не код...

Queen
не устраивают курсоры - можно без них ?

99.(9)% что можно. Но для этого (см. выше)...
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093049
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Queen
пример кода, рабочего, представлен.

Да это [censored], a не код...


напишите лучше. Пока только троллинг вижу, но троллите Вы не важно. Ещё хуже, чем я код пишу.

Akina

Queen
не устраивают курсоры - можно без них ?

99.(9)% что можно. Но для этого (см. выше)...


данных более чем достаточно для выполнения задачи, два поля IBLOCK_PROPERTY_ID и IBLOCK_ELEMENT_ID единственные по которым можно осуществить отбор.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093059
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Queen
напишите лучше. Пока только троллинг вижу, но троллите Вы не важно. Ещё хуже, чем я код пишу.

Если ВЫ не хотите немного поработать для решения СВОЕЙ проблемы - почему я-то должен за неё радеть?

Видите только троллинг? ну это Ваш выбор.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093061
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Queen
данных более чем достаточно для выполнения задачи, два поля IBLOCK_PROPERTY_ID и IBLOCK_ELEMENT_ID единственные по которым можно осуществить отбор.
тогда в чем проблема? достаточно - вперёд.
кому не достаточно - спрашивает. достаточно открыть профиль и внимательно посмотреть...
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093092
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Queen
напишите лучше. Пока только троллинг вижу, но троллите Вы не важно. Ещё хуже, чем я код пишу.

Если ВЫ не хотите немного поработать для решения СВОЕЙ проблемы - почему я-то должен за неё радеть?


А какой смысл бессмысленно работать ? Если то, о чем Вы просите решения Моей проблемы не принесет.


вадя
Queen
данных более чем достаточно для выполнения задачи, два поля IBLOCK_PROPERTY_ID и IBLOCK_ELEMENT_ID единственные по которым можно осуществить отбор.
тогда в чем проблема? достаточно - вперёд.
кому не достаточно - спрашивает. достаточно открыть профиль и внимательно посмотреть...


достаточно.
а вперёд - выше написано вперёд. вполне рабочая конструкция.
вопрос лишь был - как сделать без курсоров
если MySql подобные вещи без курсоров не могёт - так и напишите.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093101
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Queen,
тебя просили не твое решение, а задачу озвучить.
грамотно....
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093112
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Queen,
тебя просили не твое решение, а задачу озвучить.
грамотно....


задача озвучена, и написана в коде см первый пост.
код может Вам не нравится, Вас от него может тошнить - но он работает. Куда уж грамотней - рабочий код, бери и читай - там всё написано.
так же задача озвучена словами, для тех кому лениво код читать. Повторю ещё раз другими словами - из запроса, на выходе которого множество сделать update поля Value с фильтром по столбцу IBLOCK_ELEMENT_ID, данные для фильтрации которого берутся из данного множества.


Что не так ?
зачем скрипты о создании таблицы и то, что в этой таблице находится. Это проблему не решит. Троллинг чистой воды.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093116
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Queen
Повторю ещё раз другими словами - из запроса, на выходе которого множество сделать update поля Value с фильтром по столбцу IBLOCK_ELEMENT_ID, данные для фильтрации которого берутся из данного множества.
это не постановка задачи.
правильно поставленный задача - половина решения.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093123
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Queen
Повторю ещё раз другими словами - из запроса, на выходе которого множество сделать update поля Value с фильтром по столбцу IBLOCK_ELEMENT_ID, данные для фильтрации которого берутся из данного множества.
это не постановка задачи.
правильно поставленный задача - половина решения.


я боюсь, если я расскажу зачем оно мне надо - то обязательно найдётся тот, кто напишет, что задача поставлена не верно.
поэтому ограничусь химией в виде кода, поскольку переписывать Битрикс нету ни какого желания.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093191
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Queen,

просят элементарного. а не разгадывания ребусов.


вот пример задачи
https://www.sql.ru/forum/684436/faq-ispolzovanie-podzaprosov-i-konstrukciya-in-select

Необходимо использовать в разделе WHERE результат работы стороннего запроса. Первое пришедшее на ум решение использовать конструкцию вида IN (SELECT ... )


чем эта задача, отличается от моей ?

Надо бы после запроса, который возвращает множество, сделать Update по фильтру полученному из этого множества, построчно.


с примером и циклом на Update задача.


Как и в той задаче, тут тоже есть проблема - использование курсора, к которому у меня предвзятое отношение (да и не нужен он там, в таком простом цикле). Решения пока нету.

и без всяких там "дайте CREATE TABLE" и "INSERT IN TO" - которые к сути вопроса вообще не относятся.
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093204
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: препирательства почистил
...
Рейтинг: 0 / 0
Множественный Select и Update
    #40093205
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Queen
и без всяких там "дайте CREATE TABLE" и "INSERT IN TO" - которые к сути вопроса вообще не относятся.

Ну так держите:
Код: sql
1.
2.
3.
4.
5.
UPDATE bitrix_66.b_iblock_element_property t, bitrix_66.b_iblock_element_property s
SET t.value = s.value * 5
WHERE t.iblock_element_id = s.iblock_element_id
  AND s.iblock_property_id = '310'
  AND t.iblock_property_id = '173'


Но поскольку структуры таблиц и примеры данных Вы предоставить не желаете, то воля Ваша, отлаживайте это сами.

И топик закрываю.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Множественный Select и Update
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]