这是我的问题:我正在为游戏制作制作系统,并且我的数据库中已经充满了制作物品所需的资源信息。
这是我的相关表格的样子:
table #edible_resources (edible_resource_id, edible_resource_name, hunger_points, degeneration_id) table #edible_ground (id, resource, amount, location) table #req_crafting_edible (req_crafting_edible_id, edible_resource_id, req_resource_amount, created_item_id) table #items (item_id, item_name, degeneration_id, is_grounded, is_stackable, can_equip, can_edit)
我想要做的是 - 仅 - 当且仅当 - 所有需要的资源(及其所需数量)都在角色位置的地面上时,才回显可制作物品的名称。
我有一个接近的查询:
SELECT items.item_name, items.item_id FROM items
INNER JOIN req_crafting_edible
ON req_crafting_edible.created_item_id = items.item_id
INNER JOIN edible_ground
ON edible_ground.resource = req_crafting_edible.edible_resource_id
AND edible_ground.amount >= req_crafting_edible.req_resource_amount
WHERE edible_ground.location = $current_location
GROUP BY items.item_name
ORDER BY items.item_name
但这向我展示了可制作的物品,无论我是否在该地区拥有所有必需的物品。只要我拥有他们所需的资源之一,它就会向我展示项目。
只有当我在 edible_ground where location = $current_location 中拥有所有必需的资源(及其数量)时,有没有办法只显示可制作物品的名称?
有关我尝试过的更多信息:
$get_char = mysql_query("SELECT current_char FROM accounts WHERE account_id ='".$_SESSION['user_id']."'");
$current_char = mysql_result($get_char, 0, 'current_char');
$get_loc = mysql_query("SELECT current_location FROM characters WHERE character_id = $current_char");
$current_location = mysql_result($get_loc, 0, 'current_location');
//---------------------------------------------------------------COOKED FOOD
$get_food = mysql_query("SELECT items.item_name, items.item_id FROM items
INNER JOIN req_crafting_edible
ON req_crafting_edible.created_item_id = items.item_id
INNER JOIN edible_ground
ON edible_ground.resource = req_crafting_edible.edible_resource_id
AND edible_ground.amount >= req_crafting_edible.req_resource_amount
WHERE edible_ground.location = $current_location
GROUP BY items.item_name
ORDER BY items.item_name");
while ($food = mysql_fetch_array($get_food)){
echo $food['item_name'].'<br>';
}
这将返回:
- 烤鱼
- 烧焦的鱼
- 鱼汤
- 釉面浆果
- 蛋糕
- 烤鱼
- 生鱼片
- 海鲜汤
- 寿司
- 乌冬面
在地上:
- 1 条鱼
- 1个蜂蜜
尽管鱼汤、浆果蛋糕、乌冬面等需要的不仅仅是该地区的一条鱼。
谁能帮我解决这个问题?我将永远感激;我已经花了几天时间尝试自己。请?
在任何人说什么之前,我知道我需要开始使用 mysqli;不幸的是,当我开始制作游戏时(几个月前同时学习 PHP),我什至没有意识到它的存在,所以我不得不痛苦地回去并在更新中进行全部更改。