質問

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うわあごめんみんなは私が私のテーブルの列を名前の際に明らかに私は都市の前にスペースを入れて、問題を考え出しました。私は、列の名前を変更し、それがとにかく革ズボンをおかげで動作します!しかし、どこの機能を使用する代わりにアップたくさん必見速度のものを持っみんなありがとう!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top