guild_bank_item 公会银行物品表
基于 AzerothCore 官方数据库 · Characters 库 · 存储公会银行中的物品数据
表概述
guild_bank_item 表存储公会银行各标签页各格位存放的物品。关联到 item_instance 表中的具体物品实例。
核心概念:通过 guildid + TabId + SlotId 唯一确定一个物品存放位置。item_guid 指向 item_instance 表中的物品数据。
表结构
| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
| guildid | INT UNSIGNED | 0 | 公会ID → guild.guildid |
| TabId | TINYINT UNSIGNED | 0 | 标签页ID → guild_bank_tab.TabId |
| SlotId | TINYINT UNSIGNED | 0 | 格子位置(0-97) |
| item_guid | INT UNSIGNED | 0 | 物品GUID → item_instance.guid |
重要字段详解
SlotId - 格子位置
详细说明:每个标签页有98个格子(0-97)。
- 物品会按顺序或指定位置存放
- 取出物品后对应记录被删除
- 联合主键确保同一标签页同一位置不能放多个物品
item_guid - 物品实例
详细说明:指向 item_instance 表中的具体物品。
- 物品所有者(owner_guid)在银行时为公会GUID
- 支持堆叠物品(堆叠数据在 item_instance 中)
- 取款时自动更新 item_instance 的 owner_guid
SQL示例:查看公会银行物品 →
SELECT gbi.*, ii.itemEntry FROM guild_bank_item gbi JOIN item_instance ii ON gbi.item_guid=ii.guid WHERE gbi.guildid=1;SQL查询示例
-- 统计某公会银行各标签页的物品数量
SELECT TabId, COUNT(*) AS item_count
FROM guild_bank_item
WHERE guildid = 1
GROUP BY TabId;-- 查看某标签页中特定物品的堆叠总数
SELECT ii.itemEntry, COUNT(*) AS slot_count
FROM guild_bank_item gbi
JOIN item_instance ii ON gbi.item_guid = ii.guid
WHERE gbi.guildid = 1 AND gbi.TabId = 0
GROUP BY ii.itemEntry;常见问题
Q: 公会银行物品的归属权是什么?
物品存在公会银行时,item_instance 的 owner_guid 指向公会(而非个人角色)。被成员取出时,所有者变为该角色。
Q: 如何查看某个物品在公会银行的库存?
SELECT gbi.TabId, gbi.SlotId, ii.count FROM guild_bank_item gbi JOIN item_instance ii ON gbi.item_guid=ii.guid WHERE gbi.guildid=1 AND ii.itemEntry=物品ID;