我的问题与我正在编写的游戏有关,当一组元素位于游戏 block 上时,游戏元素、坏人尸体和硬币会掉落在土地的特定 x,y 坐标处的地面上显示宝藏图标。重要的是我要数一下有多少个,这样当玩家拿起它们时,如果玩家把它们全部拿走,它就会被删除。还有其他方法可以做到这一点,但我使用的方法非常适合我的应用程序。
所以我需要在字段 x、y、land 上连接 3 个表,并计算每个组合出现的次数,并且硬币存储为其值,因此我想计算每个硬币的数量(换句话说,添加值来计数)所以我有如下表格 在所有表中 posx、posy、land 均分组为 表名称:game_coins 字段:posx、posy、land、value <-- 计为存储在 value 中的 #
table name: game_items
fields: posx, posy, land, item_id <--counts as 1
table name: game_corpses
fields: posx, posy, land, id <-- counts as 1
这是我到目前为止使用的查询,我收到一个不明确的错误,我知道这意味着什么,但似乎我应该能够调用具有 1 个列名的所有表,如果它们相同并且我按分组该栏
SELECT posx, posy, land, COUNT(*) as 'count'
FROM game_itemlist
LEFT JOIN game_corpses ON posx, posy, land
LEFT JOIN game_coins ON posx,posy,land
WHERE land = 'test' GROUP BY posx, posy, land
我可以添加值来计算后记,但我无法正确获取左连接。
最佳答案
这并不是真正的JOIN
。并不是每个 game_item
都与一组特定的 game_corpses
相关;而是这只是您正在计算的两组事物。
UNION
可能更合适:
SELECT COUNT(1) FROM
(
SELECT * FROM game_items WHERE ...
UNION
SELECT * FROM game_corpses WHERE ...
)
根据您所做的工作量,您可以通过将这两个表合并为一个表并使用一个字段指示它是元素还是尸体来受益。
关于Mysql 左连接计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11434922/