powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удаление по результату запроса из самой себя. Не выходит
3 сообщений из 3, страница 1 из 1
Удаление по результату запроса из самой себя. Не выходит
    #38602067
AlexSSSS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано - простенькая базенка по учету действия с картами:
Код: php
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE `spr_krt` (
  `id` decimal(13,0) NOT NULL COMMENT 'штрих-код карты',
  `kod` char(9) DEFAULT NULL,
  `podarok` char(70) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Справочник карт';


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE `spr_sob` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'код события',
  `id_krt` decimal(13,0) NOT NULL COMMENT 'код карты',
  `date` datetime DEFAULT NULL COMMENT 'Дата события',
  `type_s` char(20) DEFAULT NULL COMMENT 'тип события: карта выдана, подарок по карте выдан',
  `magaz` int(3) DEFAULT NULL COMMENT 'номер магазина',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12024 DEFAULT CHARSET=utf8 COMMENT='справочник событий';


Вытащить данные по конкретным подаркам просто:
Код: sql
1.
2.
3.
4.
select sk.id,sk.podarok,ss.date,SS.type_s,ss.magaz from 
`spr_krt` sk, spr_sob ss where ss.`id_krt`=sk.id and 
 ss.`type_s`='ПОДАРОК ВЫДАН' and
sk.PODAROK like "%НАЗВАНИЕ ПОДАРКА%"


А теперь проблема: надо удалить записи для опреденного подарка. Пытаюсь сделать так:
Код: sql
1.
2.
3.
4.
delete from spr_sob where spr_sob.`id_krt` in (select sk.id from 
`spr_krt` sk, spr_sob ss where ss.`id_krt`=sk.id and 
 ss.`type_s`='ПОДАРОК ВЫДАН' and
sk.PODAROK like "%Разовая%")


А в ответ - You can't specify target table 'spr_sob' for update in FROM clause
Чего не учел? Вроде-бы и алиасы применил, а все равно не дает...
...
Рейтинг: 0 / 0
Удаление по результату запроса из самой себя. Не выходит
    #38602242
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
delete s
from spr_sob s
join (
  select sk.id 
  from spr_krt sk, spr_sob ss 
  where ss.id_krt=sk.id 
    and ss.type_s='ПОДАРОК ВЫДАН' 
    and sk.PODAROK like '%Разовая%'
  ) e on e.id=s.id_krt;
...
Рейтинг: 0 / 0
Удаление по результату запроса из самой себя. Не выходит
    #38602250
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не посмотрел во вложенный запрос:)
все еще проще:
Код: sql
1.
2.
3.
4.
delete ss
from spr_sob ss 
join spr_krt sk on sk.id=ss.id_krt
where ss.`type_s`='ПОДАРОК ВЫДАН' and sk.PODAROK like '%Разовая%';
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удаление по результату запроса из самой себя. Не выходит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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