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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2008, 09:21   #1
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию MySQL-нужна помощь в запросе

Здравствуйте. Т.к. я не силен в mysql, мне срочно сегодня нужен запрос.

Буду очень благодарен, если мне его поможете составить! Обращался на другие форуме - ответов 0 уже с неделю. Вы моя последняя надежда

Имеются таблицы droplist и etcitem. Мне необходимо, чтобы из droplist были удалены данные, которые имеют в таблице etcitem в столбце item_type следующие значения:

Цитата:
quest
arrow
spellbook
material
recipe
dye
Как я понял, запрос может выглядить примерно так:
PHP код:
DELETE FROM `droplistWHERE `itemidIN (
SETECT `itemidFROM `etcitemWHERE `itemtype` = 'material' OR `itemtype` = 'recipe' OR ...); 
Но я должен быть уверен, т.к. опять же, плохо знаю Mysql..


Спасибо. Надеюсь на скорый ответ

Сами таблицы _http://dump.ru/file/1130421

Последний раз редактировалось Stema; 17.10.2008 в 09:23.
Stema вне форума Ответить с цитированием
Старый 17.10.2008, 09:26   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Идея запроса реализована верно. Есть сомнения в правильности синтаксиса (апострофы, SETECT вместо SELECT...).
Я бы написал так:
Код:
DELETE FROM droplist WHERE itemid IN ( 
SELECT itemid FROM etcitem WHERE itemtype= 'material' OR itemtype= 'recipe' OR ...);
Простите, а просто попробовать свой запрос на копиях таблиц не получается? Что-то вы слишком уж осторожны для программиста

Последний раз редактировалось mihali4; 17.10.2008 в 09:28.
mihali4 вне форума Ответить с цитированием
Старый 17.10.2008, 09:30   #3
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

В том то идело что не программист, а задание ответственное))) Поэтому..


Ну надеюсь получится, спасибо за исправление опечатки Это я чтобы быть уверенным на 100%)
Stema вне форума Ответить с цитированием
Старый 17.10.2008, 09:45   #4
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

Нет не катит (( Оно удаляет все полностью с таблицы droplist

Попроавлюсь

Цитата:

DELETE FROM droplist WHERE itemid IN (
SELECT itemid FROM etcitem WHERE item_type= 'material' OR item_type= 'recipe' );
Stema вне форума Ответить с цитированием
Старый 17.10.2008, 11:31   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Оно удаляет все полностью с таблицы droplist
Ну, если таблички небольшие, заархивируйте их и прицепите к посту - будем "посмотреть", что там такого криминального...
Или выберите небольшие куски из таблиц в их копии, и то же самое...

З.Ы. Оп-п-па... У меня MySQL не стоит, даже в таблицы не заглянуть... И ставить некуда...

Последний раз редактировалось mihali4; 17.10.2008 в 15:23.
mihali4 вне форума Ответить с цитированием
Старый 17.10.2008, 12:39   #6
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

http://dump.ru/file/1130421

Посмотрите пожалуйста
Stema вне форума Ответить с цитированием
Старый 17.10.2008, 14:14   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

вроде Вы всё верно делаете. возможно, действительно, косяк в данных. я смогу вечером глянуть...
но пугает Ваша фраза "мне срочно сегодня нужен запрос"... вечером уже будет поздно? Или, раз неделю ждали ответа, ещё полдня подождёте?.. ;-)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2008, 14:42   #8
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

ПРосто эту задачу начальству обещал решить к сегодняшнему дню неделю назад, но сам как видите не справился)) Вот приходится выкорабкиваться. До 20:00 по Киевскому времени могу подождать, спасибо огромное
Stema вне форума Ответить с цитированием
Старый 17.10.2008, 21:38   #9
Stema
Пользователь
 
Регистрация: 06.10.2007
Сообщений: 47
По умолчанию

Нууу ребят без Вас как без рук =)
Stema вне форума Ответить с цитированием
Старый 18.10.2008, 19:51   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну что, проблема была не в данных, а в структуре данных (ну и плюс MySQL показал себя не с лучшей стороны - я теперь сам на будущее учту его подлую особенность...)
В таблице etcitem НЕТ ПОЛЯ itemId !!!!
Код:
SELECT itemid FROM etcitem WHERE item_type= 'material' OR item_type= 'recipe'
Абсолютно естественно выдаст ошибку!
Но, если использовать код из поста #4 - то эта подлюка подставляет поле из таблицы droplist (где такое поле есть!) вот и получается, что все записи удаляются.

вот, правильный запрос:
Код:
DELETE FROM `droplist` WHERE itemId in (
SELECT etcitem.item_id FROM etcitem
WHERE etcitem.item_type
IN (
'quest', 'arrow', 'spellbook', 'material', 'recipe', 'dye  '
));
Удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL нужна библ. для Visual C++ (MySql++) Alexoid Visual C++ 8 07.05.2008 18:29
нужна подсказка по MYSQL!!! Noor Помощь студентам 5 03.04.2007 10:52
Нужна помощь londoner Общие вопросы Delphi 2 05.02.2007 14:23