本帖最后由 表哥来了 于 2025-9-9 01:16 编辑
- SELECT DISTINCT
- ct.entry AS BOSS_ID,
- ct.name AS BOSS名称,
- c.map AS 副本地图ID,
- it.name AS 装备名称,
- it.quality AS 装备品质,
- it.entry AS 装备ID,
- -- 标识装备来自直接掉落还是共享掉落表
- CASE
- WHEN rlt.entry IS NOT NULL THEN '共享掉落表'
- ELSE '直接掉落'
- END AS 掉落类型,
- clt.ChanceOrQuestChance AS 掉落概率,
- clt.mincountOrRef AS 最小数量或引用ID,
- clt.maxcount AS 最大数量
- FROM
- creature c
- INNER JOIN creature_template ct ON c.id = ct.entry
- -- 关联直接掉落表
- LEFT JOIN creature_loot_template clt ON ct.entry = clt.entry
- -- 关联共享掉落表(当mincountOrRef为负数时通常表示引用)
- LEFT JOIN reference_loot_template rlt ON
- ABS(clt.mincountOrRef) = rlt.entry
- AND clt.mincountOrRef < 0 -- 负数通常表示这是一个引用而非数量
- -- 关联物品表(合并直接掉落和共享掉落的物品)
- LEFT JOIN item_template it ON
- -- 直接掉落:mincountOrRef为正数且item字段有值
- (clt.item = it.entry AND clt.mincountOrRef > 0) OR
- -- 共享掉落:从共享掉落表获取物品
- (rlt.item = it.entry AND clt.mincountOrRef < 0)
- WHERE
- ct.entry = 21212 -- 指定要查询的BOSS ID
- AND ct.rank IN (3) -- 3=精英BOSS
- AND it.quality = 4 -- 4代表紫色品质
- AND it.entry IS NOT NULL -- 排除无物品的记录
- ORDER BY
- BOSS_ID, 掉落类型, 掉落概率 DESC;
复制代码
|