2014-05-23 3 views
1

J'ai cette requête suivante et je veux afficher les résultats où masini> 2 mais quand j'exécute la requête il est dit que 'masini' n'est pas une colonne existante mais c'est le nom d'une colonne personnalisée que j'ai définie sur le premier rangée. Je suis nouveau à MySQL .. quelqu'un peut-il m'indiquer dans la bonne direction? C'est ma requête:MySQL. Requêtes Colonne inconnue

SELECT pers.serie_buletin AS persoana, COUNT(prop.serie_buletin) AS masini 
FROM persoana pers 
JOIN proprietate prop 
ON pers.id_persoana = prop.serie_buletin 
WHERE masini > 2 
GROUP BY persoana ; 

je définissais la colonne sur cette ligne, dans cette partie "COUNT (prop.serie_buletin) AS Masini" mais il est dit « Code d'erreur: 1054. Unknown column 'Masini' dans ' où clause '". Qu'est-ce que je rate?

Répondre

2

changement WHERE-HAVING.

GROUP BY persoana 
HAVING masini > 2; 

La clause HAVING MySQL est utilisé dans l'instruction SELECT pour spécifier conditions de filtre pour le groupe de lignes ou de granulats.

La clause MySQL HAVING est souvent utilisée avec la clause GROUP BY. Lorsque utilisant avec la clause GROUP BY, vous pouvez appliquer une condition de filtre à les colonnes qui apparaissent dans la clause GROUP BY. Si la clause GROUP BY est omise, la clause MySQL HAVING se comporte comme la clause WHERE. Notez que la clause MySQL HAVING applique la condition à chaque groupe de lignes , tandis que la clause WHERE applique la condition à chaque ligne individuelle .

source

+0

Trois bonnes réponses, mais je vais marquer la vôtre comme étant le meilleur. Entièrement expliqué et tout. Je vous remercie. – MrSilent

1
SELECT pers.serie_buletin AS persoana, 
     COUNT(prop.serie_buletin) AS masini 
FROM persoana pers 
JOIN proprietate prop 
ON pers.id_persoana = prop.serie_buletin 
GROUP BY pers.serie_buletin 
HAVING COUNT(prop.serie_buletin) > 2; 
+1

Dans la clause 'HAVING', qui se produit après' GROUP BY', vous pouvez vous référer à masini par son nom. –

+0

Ahh - Je vis dans un monde Oracle - Oracle ne semble pas supporter cela. Merci pour l'information. Maintenant, je sais que mysql fait! – Bob

1

Vous ne pouvez pas mettre des alias de colonne dans la clause where. Déjà.

Dans ce cas, cependant, vous avez besoin en fait une clause having:

SELECT pers.serie_buletin AS persoana, COUNT(prop.serie_buletin) AS masini 
FROM persoana pers 
JOIN proprietate prop 
ON pers.id_persoana = prop.serie_buletin 
GROUP BY persoana 
HAVING masini > 2; 
2

La clause where est évalué en premier, alors MySQL ne sais pas ce qui est là Masini. Voici quelques questions similaires.

Getting unknown column error when using 'as' in mysql statement

Unknown Column In Where Clause

Comme expliqué dans les questions ci-dessus et une autre réponse ici, vous ne pouvez alias utiliser des sous-requêtes, ou des clauses qui sont évaluées après l'alias est affecté comme ORDER BY, GROUP BY ou HAVING, dans votre cas, vous pouvez utiliser la clause having.

Questions connexes