我在php中用mysql做了一个小游戏。现在我遇到了一个我创建的sql查询的问题。这个想法是查询检查用户是否有足够的材料。'字段列表'中的未知列'building_requirements_count'
我有一个查询,如果我像这样使用它的工作原理:
SELECT
(
SELECT COUNT(*)
FROM building_requirements
WHERE building_id = '1'
) as building_requirements_count,
(
SELECT COUNT(*)
FROM user_materials, building_requirements
WHERE user_materials.material_id = building_requirements.material_id
AND user_id = '27'
AND building_id = '1'
AND (user_material_amount >= building_material_amount) = 1
) as user_materials_count;
但是当我添加一列使用这些子查询的失败的结果:
SELECT
(
SELECT COUNT(*)
FROM building_requirements
WHERE building_id = '1'
) as building_requirements_count,
(
SELECT COUNT(*)
FROM user_materials, building_requirements
WHERE user_materials.material_id = building_requirements.material_id
AND user_id = '27'
AND building_id = '1'
AND (user_material_amount >= building_material_amount) = 1
) as user_materials_count,
building_requirements_count = user_materials_count as enough_materials;
我得到错误:
#1054 - Unknown column 'building_requirements_count' in 'field list'
有人能向我解释为什么我不能在这里使用子查询的结果?我该如何解决这个问题?
我tryed这一点。但是我得到一个错误: #1064 - 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以获得在第15行'WHERE user_materials_count = 2'附近使用的正确语法。 – 2010-07-12 11:18:05
那么,您的查询结构有点奇怪。你为什么要做一个(实际上是两个)子查询来获得一个你不能选择任何东西的数字。 – Thariama 2010-07-12 12:32:31
因为我想在存储过程中使用它。所以,这个建议非常好,但我更喜欢完整的mysql方法。 – 2010-07-12 15:40:23