08.04.2012, 22:04
|
#32
|
Регистрация: 08.06.2010
Сообщений: 3,492
Отблагодарили 1,583 раз(а)
|
Re: mysql innodb
Цитата:
Сообщение от pchayka
Механизм у них не менялся, все те же процедуры, все та же структура серверная. Использовать процедуры не так удобно в mysql, как в mssql, но было бы интересно посмотреть на практическую реализацию этого ибо
Код:
st.set(1, var1);
st.set(2, var2);
st.set(1, var1);
st.set(2, var2);
st.set(1, var1);
st.set(2, var2);
всегда раздражал.
|
да но используется довольно редко , сабы , кланы (некоторые части). В айтемах скажем , такого и близко нет.
Практическая MySql реализация хранимок ничем примечательным не отличается от Т sql , только особенности MySQL
Свернуть ↑
MySQL
PHP код:
CREATE PROCEDURE `lip_LoadItemsByOwnerAndLoc` (IN iOwnerID INTEGER UNSIGNED,
IN eLoc ENUM('VOID','INVENTORY','PAPERDOLL','WAREHOUSE','FREIGHT','CLANWH','MAIL','PET_INVENTORY','PET_PAPERDOLL'))
NOT DETERMINISTIC
SQL SECURITY DEFINER
BEGIN
SELECT SQL_NO_CACHE
`i`.`item_id` AS `item_id`,
`i`.`owner_id` AS `owner_id`,
`i`.`item_type` AS `item_type`,
`i`.`amount` AS `amount`,
`i`.`location` AS `location`,
`i`.`slot` AS `slot`,
`i`.`enchant` AS `enchant`,
IFNULL(`id`.`duration`, -9999) AS `duration`,
IFNULL(`ip`.`period`, -1) AS `period`,
IFNULL(`ia`.`attack_type`, -2) AS `attack_attr_type`,
IFNULL(`ia`.`attack_value`, 0) AS `attack_attr_val`,
IFNULL(`ia`.`defence_fire`, 0) AS `defence_attr_fire`,
IFNULL(`ia`.`defence_water`, 0) AS `defence_attr_water`,
IFNULL(`ia`.`defence_wind`, 0) AS `defence_attr_wind`,
IFNULL(`ia`.`defence_earth`, 0) AS `defence_attr_earth`,
IFNULL(`ia`.`defence_holy`, 0) AS `defence_attr_holy`,
IFNULL(`iv`.`stat1`, 0) AS `variation_stat1`,
IFNULL(`iv`.`stat2`, 0) AS `variation_stat2`,
IFNULL(`io`.`blessed`, 0) AS `blessed`,
IFNULL(`io`.`damaged`, 0) AS `damaged`,
IFNULL(`io`.`energy`, 0) AS `item_energy`,
IFNULL(`io`.`flags`, 0) AS `custom_flags`
FROM
`items` `i`
LEFT JOIN
`items_duration` `id`
ON
`id`.`item_id` = `i`.`item_id` -- iItemID
LEFT JOIN
`items_period` `ip`
ON
`ip`.`item_id` = `i`.`item_id` -- iItemID
LEFT JOIN
`items_attributes` `ia`
ON
`ia`.`item_id` = `i`.`item_id` -- iItemID
LEFT JOIN
`items_variation` `iv`
ON
`iv`.`item_id` = `i`.`item_id` -- iItemID
LEFT JOIN
`items_options` `io`
ON
`io`.`item_id` = `i`.`item_id` -- iItemID
WHERE `i`.`owner_id` = iOwnerID AND `i`.`location` = eLoc;
END $$
TSql
PHP код:
SELECT
ui.item_id, ui.item_type, ui.amount, ui.enchant, ui.eroded, ui.bless, ui.ident, ui.wished,
isnull(ui.variation_opt1, 0),
isnull(ui.variation_opt2, 0),
isnull(ui.intensive_item_type, 0),
isnull(ui.inventory_slot_index, -1),
isnull(uia.attack_attribute_type, -2),
isnull(uia.attack_attribute_value, 0),
isnull(uia.defend_attribute_0, 0),
isnull(uia.defend_attribute_1, 0),
isnull(uia.defend_attribute_2, 0),
isnull(uia.defend_attribute_3, 0),
isnull(uia.defend_attribute_4, 0),
isnull(uia.defend_attribute_5, 0)
FROM (select * from user_item(nolock) where char_id = @char_id and warehouse = @warehouse) ui
left join user_item_attribute uia(nolock) on ui.item_id = uia.item_id
WHERE item_type > 0
Свернуть ↑Развернуть ↓
|
|
|