Перейти к содержанию
Авторизация  
HolySaint

DELETE из одной таблицы по условию из другой

Рекомендуемые сообщения

Всем привет. Подскажите не могу разобраться с запросом. Мне нужно удалить и дропа ЛС и ФА из всех мобов кроме РБ. 

DELETE FROM droplist WHERE itemId='6673,8762' FROM npc WHERE type='L2Monster'; - не работает.

DELETE FROM droplist WHERE itemId='6673,8762' IN (SELECT id FROM npc WHERE type='L2Monster'); - выполняется, но не чего не удаляет.

С меня +

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
17 минут назад, HolySaint сказал:

Всем привет. Подскажите не могу разобраться с запросом. Мне нужно удалить и дропа ЛС и ФА из всех мобов кроме РБ. 


DELETE FROM droplist WHERE itemId='6673,8762' FROM npc WHERE type='L2Monster'; - не работает.

DELETE FROM droplist WHERE itemId='6673,8762' IN (SELECT id FROM npc WHERE type='L2Monster'); - выполняется, но не чего не удаляет.

С меня +

Для начала структуры таблиц в студию. 

Отбой, где ты нашел такой ИД? Я уверен такого ИД нет.

itemId='6673,8762' 

Если хочешь удалять по множеству id, то используй "IN", а не "=".

Изменено пользователем Falkland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, Falkland сказал:

Для начала структуры таблиц в студию. 

Отбой, где ты нашел такой ИД? Я уверен такого ИД нет.


itemId='6673,8762' 

Если хочешь удалять по множеству id, то используй "IN", а не "=".

Пруфы 6673 и 8762 были добавлены ранее в дроп.

CREATE TABLE `npc` (
  `id` decimal(11,0) NOT NULL DEFAULT '0',
  `idTemplate` int(11) NOT NULL DEFAULT '0',
  `name` varchar(200) DEFAULT NULL,
  `serverSideName` int(1) DEFAULT '0',
  `title` varchar(45) DEFAULT '',
  `serverSideTitle` int(1) DEFAULT '0',
  `race` int(11) NOT NULL DEFAULT '-1',
  `collision_radius` decimal(5,2) DEFAULT NULL,
  `collision_height` decimal(5,2) DEFAULT NULL,
  `level` decimal(2,0) DEFAULT NULL,
  `sex` varchar(6) DEFAULT NULL,
  `type` varchar(20) DEFAULT NULL,
  `attackrange` int(11) DEFAULT NULL,
  `hp` decimal(8,0) DEFAULT NULL,
  `mp` decimal(8,0) DEFAULT NULL,
  `hpreg` decimal(8,2) DEFAULT NULL,
  `mpreg` decimal(5,2) DEFAULT NULL,
  `str` decimal(7,0) DEFAULT NULL,
  `con` decimal(7,0) DEFAULT NULL,
  `dex` decimal(7,0) DEFAULT NULL,
  `int` decimal(7,0) DEFAULT NULL,
  `wit` decimal(7,0) DEFAULT NULL,
  `men` decimal(7,0) DEFAULT NULL,
  `exp` decimal(9,0) DEFAULT NULL,
  `sp` decimal(8,0) DEFAULT NULL,
  `patk` decimal(5,0) DEFAULT NULL,
  `pdef` decimal(5,0) DEFAULT NULL,
  `matk` decimal(5,0) DEFAULT NULL,
  `mdef` decimal(5,0) DEFAULT NULL,
  `atkspd` decimal(3,0) DEFAULT NULL,
  `aggro` decimal(6,0) DEFAULT NULL,
  `matkspd` decimal(4,0) DEFAULT NULL,
  `rhand` decimal(5,0) DEFAULT NULL,
  `lhand` decimal(5,0) DEFAULT NULL,
  `armor` decimal(1,0) DEFAULT NULL,
  `walkspd` decimal(3,0) DEFAULT NULL,
  `runspd` decimal(3,0) DEFAULT NULL,
  `faction_id` varchar(40) DEFAULT NULL,
  `faction_range` decimal(4,0) DEFAULT NULL,
  `isUndead` int(11) DEFAULT '0',
  `absorb_level` decimal(2,0) DEFAULT '0',
  `absorb_type` enum('FULL_PARTY','LAST_HIT','PARTY_ONE_RANDOM') NOT NULL DEFAULT 'LAST_HIT',
  `ss` int(4) DEFAULT '0',
  `bss` int(4) DEFAULT '0',
  `ss_rate` int(3) DEFAULT '0',
  `AI` varchar(8) DEFAULT 'fighter',
  `drop_herbs` enum('true','false') NOT NULL DEFAULT 'false',
  PRIMARY KEY (`id`),
  KEY `I_npc_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `droplist` (
  `mobId` int(11) NOT NULL DEFAULT '0',
  `itemId` int(11) NOT NULL DEFAULT '0',
  `min` int(11) NOT NULL DEFAULT '0',
  `max` int(11) NOT NULL DEFAULT '0',
  `category` int(11) NOT NULL DEFAULT '0',
  `chance` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`mobId`,`itemId`,`category`),
  KEY `key_mobId` (`mobId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

Изменено пользователем HolySaint

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 минут назад, HolySaint сказал:

Пруфы 6673 и 8762 были добавлены ранее в дроп.


CREATE TABLE `npc` (
  `id` decimal(11,0) NOT NULL DEFAULT '0',
  `idTemplate` int(11) NOT NULL DEFAULT '0',
  `name` varchar(200) DEFAULT NULL,
  `serverSideName` int(1) DEFAULT '0',
  `title` varchar(45) DEFAULT '',
  `serverSideTitle` int(1) DEFAULT '0',
  `race` int(11) NOT NULL DEFAULT '-1',
  `collision_radius` decimal(5,2) DEFAULT NULL,
  `collision_height` decimal(5,2) DEFAULT NULL,
  `level` decimal(2,0) DEFAULT NULL,
  `sex` varchar(6) DEFAULT NULL,
  `type` varchar(20) DEFAULT NULL,
  `attackrange` int(11) DEFAULT NULL,
  `hp` decimal(8,0) DEFAULT NULL,
  `mp` decimal(8,0) DEFAULT NULL,
  `hpreg` decimal(8,2) DEFAULT NULL,
  `mpreg` decimal(5,2) DEFAULT NULL,
  `str` decimal(7,0) DEFAULT NULL,
  `con` decimal(7,0) DEFAULT NULL,
  `dex` decimal(7,0) DEFAULT NULL,
  `int` decimal(7,0) DEFAULT NULL,
  `wit` decimal(7,0) DEFAULT NULL,
  `men` decimal(7,0) DEFAULT NULL,
  `exp` decimal(9,0) DEFAULT NULL,
  `sp` decimal(8,0) DEFAULT NULL,
  `patk` decimal(5,0) DEFAULT NULL,
  `pdef` decimal(5,0) DEFAULT NULL,
  `matk` decimal(5,0) DEFAULT NULL,
  `mdef` decimal(5,0) DEFAULT NULL,
  `atkspd` decimal(3,0) DEFAULT NULL,
  `aggro` decimal(6,0) DEFAULT NULL,
  `matkspd` decimal(4,0) DEFAULT NULL,
  `rhand` decimal(5,0) DEFAULT NULL,
  `lhand` decimal(5,0) DEFAULT NULL,
  `armor` decimal(1,0) DEFAULT NULL,
  `walkspd` decimal(3,0) DEFAULT NULL,
  `runspd` decimal(3,0) DEFAULT NULL,
  `faction_id` varchar(40) DEFAULT NULL,
  `faction_range` decimal(4,0) DEFAULT NULL,
  `isUndead` int(11) DEFAULT '0',
  `absorb_level` decimal(2,0) DEFAULT '0',
  `absorb_type` enum('FULL_PARTY','LAST_HIT','PARTY_ONE_RANDOM') NOT NULL DEFAULT 'LAST_HIT',
  `ss` int(4) DEFAULT '0',
  `bss` int(4) DEFAULT '0',
  `ss_rate` int(3) DEFAULT '0',
  `AI` varchar(8) DEFAULT 'fighter',
  `drop_herbs` enum('true','false') NOT NULL DEFAULT 'false',
  PRIMARY KEY (`id`),
  KEY `I_npc_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `droplist` (
  `mobId` int(11) NOT NULL DEFAULT '0',
  `itemId` int(11) NOT NULL DEFAULT '0',
  `min` int(11) NOT NULL DEFAULT '0',
  `max` int(11) NOT NULL DEFAULT '0',
  `category` int(11) NOT NULL DEFAULT '0',
  `chance` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`mobId`,`itemId`,`category`),
  KEY `key_mobId` (`mobId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

При чем тут 6673 и 8762, если у тебя указан ОДИН ID, РАВНЫЙ '6673,8662'? Прочитай еще раз, что я написал.

DELETE FROM droplist FROM npc WHERE type='L2Monster' AND (itemId='6673' OR itemId='8762'); - внезапно заработает, если условие с типом конечно выполняется.
DELETE FROM droplist FROM npc WHERE type='L2Monster' AND itemId IN ('6673','8762'); - заработает еще лучше, конечно же если условие с типом выполняется.

UPD: Госпади, сколько там FROM в одном запросе, не заработает это. 

DELETE FROM droplist WHERE itemId IN ('6673','8762') AND КОЛОНКА_НПЦ_ИД IN (SELECT id FROM npc WHERE type='L2Monster'); 

Имя колонки с нпц из дроплиста замени на свою.

Прежде чем городить подобный бред, нужно хотябы загуглить азы sql.

Изменено пользователем Falkland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Falkland сказал:

При чем тут 6673 и 8762, если у тебя указан ОДИН ID, РАВНЫЙ '6673,8662'? Прочитай еще раз, что я написал.

Я не мастер, я только учусь. Если делать так  DELETE FROM droplist WHERE itemId='6673,8762'; удаляет все и у всех вот и пихаю так везде. Если даже использовать один ID все равно не удаляет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, HolySaint сказал:

Я не мастер, я только учусь. Если делать так  DELETE FROM droplist WHERE itemId='6673,8762'; удаляет все и у всех вот и пихаю так везде. Если даже использовать один ID все равно не удаляет.

О, не заметил структуры таблиц в посте выше. Тогда конечный запрос будет выглядеть так:

DELETE FROM droplist WHERE itemId IN ('6673','8762') AND mobId IN (SELECT id FROM npc WHERE type='L2Monster'); 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Falkland сказал:

О, не заметил структуры таблиц в посте выше. Тогда конечный запрос будет выглядеть так:

DELETE FROM droplist WHERE itemId IN ('6673','8762') AND mobId IN (SELECT id FROM npc WHERE type='L2Monster'); 

Гуглю прежде чем писать, но на примерах легче учиться. Благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...