Je fais un petit jeu en PHP avec mysql. Maintenant, j'ai un problème avec l'une des requêtes SQL que j'ai créées. L'idée est que la requête vérifie si l'utilisateur dispose de suffisamment de matériaux.Colonne inconnue 'building_requirements_count' dans 'field list'
J'ai une requête que si je l'utilise comme ceci cela fonctionne:
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;
Mais quand j'ajoute une colonne qui utilisent le résultat de ces sous-requêtes de ce échoue:
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;
Je reçois l'erreur:
#1054 - Unknown column 'building_requirements_count' in 'field list'
Quelqu'un peut-il m'expliquer pourquoi je ne peux pas utiliser les résultats de la sous-requête ici? Et comment je peux réparer ça?
I tryed que. Mais j'obtiens une erreur: # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'WHERE user_materials_count = 2' à la ligne 15 –
Eh bien, votre structure de requête est un peu bizarre. Pourquoi faites-vous un (en fait deux) sous-sélectionner pour obtenir un nombre par lequel vous ne pouvez rien sélectionner. – Thariama
En raison du fait que je veux utiliser cela dans une procédure stockée. Donc, la suggestion est très belle, mais je préfère une approche complète-mysql. –