2016-04-11 17 views
0

私は見て見て、試してみましたが、成功しませんでした。私は特定の距離範囲内でユーザーを表示するために使用するクエリを持っています。それは素晴らしいですが、私のusersテーブルからすべてのユーザーを返します。そして、account_typeの値が '1'に等しいユーザーのみを返すようにします。だから、基本的に異なる種類の勘定科目タイプが私のユーザーテーブルを共有しています。このページでは、1つのタイプのユーザーのみを表示することができます。私は、私が知っている同じテーブルに参加することを含め、あらゆる種類のことを試してきましたが、それは意味がなく、とにかく動作しませんでした。 基本的に、私はこのクエリでWHERE節を追加して 'account_type'という名前の列を確認できる場所を知りたいと思います。経度緯度クエリですが、同じテーブル内の列と一致する行のみ

はここに私の機能クエリです:

:私だけACCOUNT_TYPE = 1を持っているテーブルからユーザーを返すようにしたいので

SELECT `user_id`, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos(radians(lng) - radians('".$lng."')) + sin(radians('".$lat."')) * sin(radians(lat)))) AS distance FROM users HAVING distance <= '".$dist."' ORDER BY distance 

、ノー成功を収めて、以下のさまざまなバリエーションをやってみました

SELECT `user_id`, `account_type`, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos(radians(lng) - radians('".$lng."')) + sin(radians('".$lat."')) * sin(radians(lat)))) AS distance FROM users ***WHERE `account_type` = '1'*** HAVING distance <= '".$dist."' ORDER BY distance 

SELECT `user_id`, `account_type`, (3959 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos(radians(lng) - radians('".$lng."')) + sin(radians('".$lat."')) * sin(radians(lat)))) AS distance FROM users HAVING distance <= '".$dist."' ***WHERE `account_type` = '1'*** ORDER BY distance 

他にもたくさんありますが、私はこのトピックをこれ以上汚染しません。誰かが私が間違っていることを教えてもらえますか?ありがとうございます

+0

単に「WHERE」だけを使用してみてください。SELECT .........ユーザーaccount_type = '1' AND distance <= '"。dist。" ORDER BY distance " – rhavendc

+0

ありがとう。あなたが言ったことを試してみました。SELECT user_id、account_type、(3959 * acos(radians( '"。$ lat。"'))* cos(radians(lat))* cos(radians(lng) account_type = '1'と距離(距離)からの距離ユーザーからの距離(単位:ラジアン(ラジアン(緯度))) === "dist。" 'ORDER BY distanceとmysqlエラーを取得する – user1000665

+0

あなたのクエリはSELECTか......... WHERE account_type =' 1 'HAVING distance <=' "。$ dist 」「距離による注文」は効果がありますか?それは動作するはずです。 HAVINGの前に 'WHERE'節を置くのは正しいですが、' GROUP BY'がなくても 'HAVING'を使っても構いません。 ** account_typeが1で、テーブルの距離が指定されていないユーザーがいる可能性があります** – rhavendc

答えて

0

@rhavendcが正しいです。私は馬鹿だ。私がこれをテストするために作成したアカウントは、離れた場所をいくつか使用していましたが、私のサイトには20個以上のテストアカウントがありますが、テストアカウントが使っていたクレイジーな場所の100m以内にaccount_type = '1 'だから、

私はそれだけで適切な結果に

$たqry = "3959の* ACOS(COS(ラジアン((、user_idを選択取得するには、このクエリを使用するために2秒かかったことに気づいたら、'"。$の緯度を。 * sin(ラジアン(ラジアン))* sin(ラジアン(ラジアン) - ラジアン(ラジアン(ラジアン)ラジアン(緯度)))))AS距離from account_type = '1' HAVING distance < = '"。$ dist。"' ORDER BY distance ";

ありがとうございます。私の愚かさを謝ります。

関連する問題