0

タイトルで述べたように、「bid_userloc」テーブル内で緯度と経度のリクエストを行っています...しかし、「wp_usermeta」テーブルからの情報を組み合わせる必要があります...

SET @centerLat = '48.531157';
SET @centerLng = '-123.782959';

SELECT *, ( 3959 * acos( cos( radians( @centerLat ) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(@centerLng) ) + sin( radians( @centerLat ) ) * sin( radians( lat ) ) ) ) AS distance FROM bid_userloc HAVING distance < 25 ORDER BY distance LIMIT 0 , 20

そしてuser_id、から入ってくるを使用して、次のようなテーブルSELECT *からユーザーデータを取得する必要があります。wp_userdata

id
meta_key
meta_value

たとえば、「ニックネーム」と他の多くの名前が必要ですが、meta_value1meta_keyつでどのように行われるかを確認したら、さらに追加できます。

ほんとうにありがとう!

4

2 に答える 2

0

これを試してみてください。距離を元の距離に置き換え、他の何かを実際の何かに置き換えます。

SET @centerLat = '48.531157';
SET @centerLng = '-123.782959';

SELECT bid_userloc.*, distance, nickname.meta_value, something_else.meta_value
FROM bid_userloc
LEFT JOIN wp_usermeta AS nickname 
    ON nickname.userid = bid_userloc.user_id 
        AND nickname.meta_key = 'nickname'
LEFT JOIN wp_usermeta AS something_else 
    ON something_else.userid = bid_userloc.user_id 
        AND something_else.meta_key = 'something_else'
HAVING distance < 25
ORDER BY distance 
LIMIT 0 , 20
于 2012-10-20T00:17:09.257 に答える
0

変更された答えは次のとおりです。

SET @centerLat = '48.531157';
SET @centerLng = '-123.782959';

SELECT bid_userloc.*, nickname.meta_value, last_name.meta_value,
( 3959 * acos( cos( radians( @centerLat ) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(@centerLng) ) + sin( radians( @centerLat ) ) * sin( radians( lat ) ) ) ) AS distance
FROM bid_userloc
LEFT JOIN wp_usermeta AS nickname 
    ON nickname.user_id = bid_userloc.user_id 
        AND nickname.meta_key = 'nickname'
LEFT JOIN wp_usermeta AS last_name 
    ON last_name.user_id = bid_userloc.user_id 
        AND last_name.meta_key = 'last_name'
HAVING distance < 25
LIMIT 0 , 20
于 2012-10-20T00:52:42.477 に答える