2014-10-13 3 views
0

в дб у меня есть 2 таблицы «НПЦ» и «выпадающий список»

вставки в таблицу с информацией из другого

CREATE TABLE `npc`( 
    `id` smallint(5) unsigned NOT NULL DEFAULT '0', 
    `idTemplate` smallint(5) unsigned NOT NULL DEFAULT '0', 
    `name` varchar(200) NOT NULL DEFAULT '', 
    `serverSideName` tinyint(1) NOT NULL DEFAULT '0', 
    `title` varchar(45) NOT NULL DEFAULT '', 
    `serverSideTitle` tinyint(1) NOT NULL DEFAULT '0', 
    `class` varchar(200) DEFAULT NULL, 
    `collision_radius` decimal(6,2) DEFAULT NULL, 
    `collision_height` decimal(6,2) DEFAULT NULL, 
    `level` tinyint(2) DEFAULT NULL, 
    `sex` enum('etc','female','male') NOT NULL DEFAULT 'etc', 
    `type` varchar(22) DEFAULT NULL, 
    `attackrange` smallint(4) DEFAULT NULL, 
    `hp` decimal(30,15) DEFAULT NULL, 
    `mp` decimal(30,15) DEFAULT NULL, 
    `hpreg` decimal(30,15) DEFAULT NULL, 
    `mpreg` decimal(30,15) DEFAULT NULL, 
    `str` tinyint(2) NOT NULL DEFAULT '40', 
    `con` tinyint(2) NOT NULL DEFAULT '43', 
    `dex` tinyint(2) NOT NULL DEFAULT '30', 
    `int` tinyint(2) NOT NULL DEFAULT '21', 
    `wit` tinyint(2) NOT NULL DEFAULT '20', 
    `men` tinyint(2) NOT NULL DEFAULT '20', 
    `exp` int(9) NOT NULL DEFAULT '0', 
    `sp` int(9) NOT NULL DEFAULT '0', 
    `patk` decimal(12,5) DEFAULT NULL, 
    `pdef` decimal(12,5) DEFAULT NULL, 
    `matk` decimal(12,5) DEFAULT NULL, 
    `mdef` decimal(12,5) DEFAULT NULL, 
    `atkspd` smallint(4) NOT NULL DEFAULT '230', 
    `critical` tinyint(1) NOT NULL DEFAULT '1', 
    `aggro` smallint(4) NOT NULL DEFAULT '0', 
    `matkspd` smallint(4) NOT NULL DEFAULT '333', 
    `rhand` smallint(5) unsigned NOT NULL DEFAULT '0', 
    `lhand` smallint(5) unsigned NOT NULL DEFAULT '0', 
    `enchant` tinyint(1) NOT NULL DEFAULT '0', 
    `walkspd` decimal(10,5) NOT NULL DEFAULT '60', 
    `runspd` decimal(10,5) NOT NULL DEFAULT '120', 
    `targetable` tinyint(1) NOT NULL DEFAULT '1', 
    `show_name` tinyint(1) NOT NULL DEFAULT '1', 
    `dropHerbGroup` tinyint(1) NOT NULL DEFAULT '0', 
    `basestats` tinyint(1) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`,`idTemplate`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

CREATE TABLE `droplist` ( 
    `mobId` smallint(5) unsigned NOT NULL DEFAULT '0', 
    `itemId` smallint(5) unsigned NOT NULL DEFAULT '0', 
    `min` int(8) unsigned NOT NULL DEFAULT '0', 
    `max` int(8) unsigned NOT NULL DEFAULT '0', 
    `category` smallint(3) NOT NULL DEFAULT '0', 
    `chance` mediumint(7) unsigned NOT NULL DEFAULT '0', 
    PRIMARY KEY (`mobId`,`itemId`,`category`), 
    KEY `key_mobId` (`mobId`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

, как вставить в «выпадающего список» -> «mobid» 'Itemid «мин '' max '' category '' chance ', где "droplist.mobid = npc.id" и из npc.type = L2Raidboss и npc.level> = 76;

INSERT ('' '6673' '10' '15' '1' '1000000') INTO droplist WHERE mobid IN (SELECT id FROM npc WHERE type = 'L2RaidBoss' AND level> = '76');

наверняка это не работают, но нужно что-то вроде этого

+0

есть ли ключ отношения между «нцем» и «» выпадающего списком – Backtrack

+0

Если есть ключ отношения можно использовать соединение и вставить записи. Можете ли вы предоставить мне информацию о том, как эти две таблицы имеют отношение друг к другу? – Backtrack

+0

Не совсем уверен, что вы имели в виду под «* ... вставляете в« droplist »... где droplist.mobid = npc.id * ..." , но вы можете попробовать посмотреть инструкцию ['INSERT..SELECT'] (http://dev.mysql.com/doc/refman/5.7/en/insert-select.html). –

ответ

0

использования выберите запрос, чтобы увидеть, если mobid присутствует в таблице ВСНП вместе с требованиями, таких как (типа = L2Raidboss и уровень> = 76)

, если запрос на выборку возвращает результат, продолжить процесс вставки для выпадающего списка таблицы

добавлено:

в случае, если значения для каждой строки будет одинаковым/константа,

сделать первый запрос:

SELECT id FROM npc WHERE type = 'L2RaidBoss' AND level >= '76' 

хранить результаты в массиве, выполните второй запрос

while($array_results[id] ....)//depending on language that you will be using 
{ 
insert into droplist(mobid,itemid,min,max,category,chance) values ('$array_results[id]','6673','10','15','1','1000000') 
} 

это зависит от языка, который вы будете использовать, вы будете использовать PHP для этого?

+0

SELECT id FROM npc WHERE type = 'L2RaidBoss' AND level> = '76'; в результате у меня есть все 76 + уровень L2Raidboss. –

+0

вы можете сохранить идентификаторы в массиве, вставить его в droplist, btw, где вы получите значения для этих «itemid» 'min' 'max' 'category' 'chance'? –

+0

Я хочу добавить то же значение для 'itemid' 'min' 'max' 'category' 'chance' для exmplae ('6673' '10' '15' '1' '1000000') –

0

попробовать это:

INSERT INTO table2 
(column_name(s)) 
SELECT column_name(s) 
FROM table1; 

или если вы хотите загрузить из другой базы данных вы можете написать миграции базы данных сценариев, как: который обеспечит MySql Officail site facality импортировать из сСт, текстовый файл. Для справки

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' 
    [REPLACE | IGNORE] 
    INTO TABLE tbl_name 
    [CHARACTER SET charset_name] 
    [{FIELDS | COLUMNS} 
     [TERMINATED BY 'string'] 
     [[OPTIONALLY] ENCLOSED BY 'char'] 
     [ESCAPED BY 'char'] 
    ] 
    [LINES 
     [STARTING BY 'string'] 
     [TERMINATED BY 'string'] 
    ] 
    [IGNORE number LINES] 
    [(col_name_or_user_var,...)] 
    [SET col_name = expr,...] 
Смежные вопросы