Нужна помощь с UPDATE, выборка из двух таблиц

DI
На сайте с 22.01.2010
Offline
135
647

Возникла проблема с обновлением полей с помощью UPDATE, при выборке из двух таблиц

// Подсчет количества активных заявок с отказом от услуги

fix all;

select
LQ.SNILSS as 'СНИЛС',
LQ.UNAME as 'ФИО',
SQ.ID_OWN as 'ID',
SQ.ID_FSS as 'Филиал',
SQ.STATE as 'Статус',
SQ.REFUSE as 'Причина',
SQ.REQNUM as 'Номер заявки',
SQ.SDATE as 'Дата справки',
LQ.STATE_DATE as 'Сверка ПФ',
LQ.GET_SOC_1 as 'LQ путевка',
SQ.GET_SOC_1 as 'SQ путевка'
from SQUEUE SQ, LQUEUE LQ
where
LQ.ID = SQ.ID_OWN //связь таблиц
and LQ.GET_SOC_1 = 1 //1 не получается, 1 получает
and SQ.ID_FSS = '201'
and SQ.STATE = 0 //0 - активная, 3 - отменная
order by SQ.SDATE
;

/* Перевод активных заявок в отменные с указанием причины*/

При выполнении данного запроса

update SQUEUE SQ, LQUEUE LQ

set SQ.STATE = 3, SQ.REFUSE = 3
where
LQ.ID = SQ.ID_OWN //связь таблиц
and LQ.GET_SOC_1 = 1 //1 не получается, 1 получает
and SQ.ID_FSS = '201'
and SQ.STATE = 0 //0 - активная, 3 - отменная
;

Получаю такую ошибку

[SQL-1029] Expected keyword 'set' :(Line 2, Near ',')

[SQL-1029] Expected keyword 'set'
ДП
На сайте с 23.11.2009
Offline
203
#1

у меня есть апдейт нескольких таблиц в mysql - но я с join'ами пишу, там получается что-то типа


UPDATE `table1` AS t1
INNER JOIN `table2` AS t2 ON t1.id=t2.other_id
SET field = value
WHERE t1.id = 2

ну как пример.

DI
На сайте с 22.01.2010
Offline
135
#2
Дикий пионер:
у меня есть апдейт нескольких таблиц в mysql - но я с join'ами пишу, там получается что-то типа

UPDATE `table1` AS t1
INNER JOIN `table2` AS t2 ON t1.id=t2.other_id
SET field = value
WHERE t1.id = 2

ну как пример.

К сожалению БД HyTech не поддерживает INNER JOIN

ДП
На сайте с 23.11.2009
Offline
203
#3

Понятно, я, конечно, увидел в первом посте fix all; в запросе и подумал, что не MySQL но всё-таки лучше было название БД уточнить сразу.

DI
На сайте с 22.01.2010
Offline
135
#4
Дикий пионер:
Понятно, я, конечно, увидел в первом посте fix all; в запросе и подумал, что не MySQL но всё-таки лучше было название БД уточнить сразу.

когда указываешь БД, никто даже не пытается отвечать))

ДП
На сайте с 23.11.2009
Offline
203
#5

Я возможности этой БД не знаю, но если там есть подзапросы, то можно сделать что-то типа


update SQUEUE SQ
set SQ.STATE = 3, SQ.REFUSE = 3
where SQ.ID_OWN IN (SELECT SQ.ID_OWN FROM SQUEUE SQ, LQUEUE LQ
where
LQ.ID = SQ.ID_OWN //связь таблиц
and LQ.GET_SOC_1 = 1 //1 не получается, 1 получает
and SQ.ID_FSS = '201'
and SQ.STATE = 0)
DI
На сайте с 22.01.2010
Offline
135
#6
Дикий пионер:
Я возможности этой БД не знаю, но если там есть подзапросы, то можно сделать что-то типа

update SQUEUE SQ
set SQ.STATE = 3, SQ.REFUSE = 3
where SQ.ID_OWN IN (SELECT SQ.ID_OWN FROM SQUEUE SQ, LQUEUE LQ
where
LQ.ID = SQ.ID_OWN //связь таблиц
and LQ.GET_SOC_1 = 1 //1 не получается, 1 получает
and SQ.ID_FSS = '201'
and SQ.STATE = 0)

благодарю, помогло. Единственное, что все служебные слова пишутся в нижнем регистре, иначе ошибка. Особенность СУБД HyTech

DI
На сайте с 22.01.2010
Offline
135
#7

Так, а можно ли как то вывести лог измененных полей? Или надо все таки пилить скрипт? Я не только про свою БД, но и про другие

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий