Estas consultas SQL están pensadas para ser herramientas rápidas y fáciles de usar que ayuden a identificar y solucionar problemas en la base de datos de AzerothCore. Están aquí como una referencia rápida para ayudar al examinar problemas relacionados con la BD.
Ten en cuenta que esto no cuenta los items dropeados desde RLTs.
SET @ITEMID := XXXX;
SELECT ct.name, clt.chance, ct.maxlevel, it.ItemLevel
FROM `creature_template` ct
JOIN `creature_loot_template` clt ON ct.lootid = clt.entry
JOIN `item_template` it ON clt.item = it.entry
WHERE it.entry = @ITEMID;
SET @ITEMID = XXXX;
SELECT rlt.entry, it.name
FROM `reference_loot_template` rlt
JOIN `item_template` it ON rlt.Item = it.entry
WHERE rlt.item = @ITEMID;
No recursivo.
SET @RLTENTRY := XXXX;
SELECT distinct ct.entry, ct.name
FROM `creature_template` ct
JOIN `creature_loot_template` clt ON ct.lootid = clt.entry
WHERE clt.Reference = @RLTENTRY;
Esto es útil al determinar qué creatures deberían tener un RLT concreto en sus tablas de drop.
SET @RLTENTRY := XXXX;
SELECT COUNT(rlt.Item), MIN(it.ItemLevel), MAX(it.ItemLevel), AVG(it.ItemLevel)
FROM `item_template` it
JOIN `reference_loot_template` rlt ON it.entry = rlt.item
WHERE rlt.entry = @RLTENTRY;
Ten en cuenta que esto es lo suficientemente complejo como para que Keira no lo ejecute correctamente: debes ejecutarlo desde un prompt de comandos de MySQL. Gracias a @anguaive por este.
SET @ITEM_NAME := 'insert name of item here';
SET @ITEM_ID := (SELECT `entry` FROM `item_template` WHERE `name` = @ITEM_NAME);
SELECT DISTINCT ct.name AS `creature`, @ITEM_NAME as `item` FROM (
WITH RECURSIVE cte (`entry`, `item`, `reference`) AS (
SELECT `entry`, `item`, `reference`
FROM `reference_loot_template`
WHERE `item` = @ITEM_ID
UNION ALL
SELECT r.entry, r.item, r.reference
FROM `reference_loot_template` r
INNER JOIN cte
ON r.reference = cte.entry
)
SELECT clt.entry
FROM cte
JOIN `creature_loot_template` clt ON clt.reference = cte.entry
UNION ALL
SELECT entry
FROM
`creature_loot_template`
WHERE item = @ITEM_ID
) AS q
JOIN `creature_template` ct ON ct.lootid = q.entry
ORDER BY ct.name;
Los reportes de bugs a veces solo referencian un GUID sin ninguna otra información sobre un NPC. Esto encontrará la creature a la que pertenece un GUID.
SET @CGUID := XXXX;
SELECT ct.entry, ct.name, ct.minlevel, ct.maxlevel
FROM `creature_template` ct
JOIN `creature` c ON ct.entry = c.id
WHERE c.guid = @CGUID;
Podrías usar parte del nombre del NPC (como aquí, 'Gordunni') y encontrará todos los NPCs con esa cadena en su nombre.
SET @NAME := 'gordunni';
SELECT c.guid, ct.name
FROM `creature` c
JOIN `creature_template` ct ON ct.entry = c.id
WHERE c.movementtype = 0 AND ct.name LIKE '%@NAME%';
Ten en cuenta que esto es un poco tosco, y solo funciona si el hechizo está en su primer slot de acción. En este caso, XXXX es el ID del hechizo.
SET @SPELLID := XXXX;
SELECT ct.entry, ct.name, ct.maxlevel, ss.action_param1
FROM `creature_template` ct
JOIN `smart_scripts` ss ON ct.entry = ss.entryorguid
WHERE ss.action_param1 = @SPELLID;
Podría usarse para arreglar creatures estáticas.
SET @CID := XXXX;
SELECT c.id, AVG(c.wander_distance)
FROM `creature` c
WHERE c.id = @CID AND c.wander_distance > 0;
Dado un GUID de nodo, averigua si pertenece a un pool de nodos y lista los demás miembros.
SET @GUID := XXXX;
SELECT * FROM `pool_gameobject` WHERE `pool_entry` IN (
SELECT `pool_entry` from `pool_gameobject` WHERE guid = @GUID);
Dado el nombre de un objeto, encuentra los temporizadores de respawn para todos los spawns que coinciden con esa cadena de nombre.
SELECT got.name, go.guid, go.spawntimesecs
FROM `gameobject_template` got
JOIN `gameobject` go ON got.entry = go.id
WHERE name LIKE '%name-of-object%'
ORDER BY go.spawntimesecs
Dado un GUID de personaje, muestra el inventario con el count correspondiente dentro del item instance y el nombre correspondiente dentro del item template.
SET @GUID := XXXX;
SELECT ci.*, ii.itemEntry, it.name, ii.count
FROM character_inventory ci
JOIN item_instance ii ON ci.item = ii.guid
JOIN acore_world.item_template it ON ii.itemEntry = it.entry
WHERE ci.guid = @GUID;