質問
Imることができるようにこのクエリーの仕事もこのエラー:Unknown column'zips.都市の"この条項'
`$query = "SELECT zips.* FROM zips HAVING zips.city LIKE '%$city%' AND zips.stateabbr LIKE '%$state%' LIMIT 1"; $result = mysql_query($query) or die (mysql_error());`
私zipsテーブルは、市内のカラムimなどの問題は、知っていimへのアクセスデータベースで見られるのでこの検索キーワードに誤りがない:
$zip1query = "SELECT zips.* FROM zips WHERE zips.zip = '$zip' ";
アドバイスもよろしくお願いいたします!よろしく!
解決
having
句はwhere
句と同じことを意味するものではありません:。単純なクエリを実行するとき、あなたはwhere
を使用する必要があります - 作品ということ、あなたが2番目のクエリに何をしたかである。
having
条件はgroup by
句の結果に適用されなければならない場合に使用されます。
どの手段、ここでは、クエリがこのように構築する必要があること。
$query = "SELECT zips.*
FROM zips
where zips.city LIKE '%$city%'
AND zips.stateabbr LIKE '%$state%'
LIMIT 1";
あなたはまだ存在しないか、カラムが見つかりません(少なくともcity
および/またはstateabbr
用)のの程度の誤差を持っている場合、その列は、あなたの中に存在しないため、そのことを、それができるでしょうテーブルます。
この場合、私たちにできることあまりないです:あなたはそれが含まれている列を決定するために、あなたのテーブルの構造をチェックする必要があります。
。あなたはphpMyAdminのようなWebベースのツールを使用して、その構造を確認するか、などのSQL命令を使用することができます:
desc zips;
参考のために、引用 select
のMySQLのマニュアルページ:
SQL標準では、HAVINGことが必要です 中列のみを参照する必要があります で使用
GROUP BY
句または列 集約関数。
...
項目に対してHAVING
を使用しないでください
WHERE
句にする必要があります。
例えば、書いていません 次:SELECT col_name FROM tbl_name HAVING col_name > 0;
の代わりにこれを書く:
SELECT col_name FROM tbl_name WHERE col_name > 0;
...
HAVING
句はを参照することができます 集約関数、WHERE
句はできません。
他のヒント
使ってみ WHERE
の代わりに HAVING
.
の適正な方法で使用の場を提供しています。
$query = "SELECT
zips.*
FROM
zips
WHERE
zips.city LIKE '%$city%'
AND
zips.stateabbr LIKE '%$state%'
LIMIT 1";
を使用するときグルーピング覧 こちらの 説明
Oうわあごめんみんなは私が私のテーブルの列を名前の際に明らかに私は都市の前にスペースを入れて、問題を考え出しました。私は、列の名前を変更し、それがとにかく革ズボンをおかげで動作します!しかし、どこの機能を使用する代わりにアップたくさん必見速度のものを持っみんなありがとう!