0

いくつかのメタデータをユーザーに結合するクエリがあります。

            SELECT
                users.*,
                gender.meta_value AS `gender`,
                sexual_orientation.meta_value AS `sexual_orientation`,
                relationship_status.meta_value AS `relationship_status`,
                interest_1.meta_value AS `interest_1`,
                interest_2.meta_value AS `interest_2`,
                interest_3.meta_value AS `interest_3`,
                interest_4.meta_value AS `interest_4`,
                interest_5.meta_value AS `interest_5`,
                interest_6.meta_value AS `interest_6`,
                address.address_line_1,
                address.address_line_2,
                address.town,
                address.county,
                address.postcode,
                address.country,
                address.longitude,
                address.latitude
            FROM
                `users`
            JOIN
                `storage_varchars` AS `gender`
            ON
                gender.user_id = users.id AND gender.meta_name = 'gender'
            JOIN
                `storage_varchars` AS `sexual_orientation`
            ON
                sexual_orientation.user_id = users.id AND sexual_orientation.meta_name = 'sexual_orientation'
            JOIN
                `storage_varchars` AS `relationship_status`
            ON
                relationship_status.user_id = users.id AND relationship_status.meta_name = 'relationship_status'
            JOIN
                `storage_varchars` AS `interest_1`
            ON
                interest_1.user_id = users.id AND interest_1.meta_name = 'interest_1'
            JOIN
                `storage_varchars` AS `interest_2`
            ON
                interest_2.user_id = users.id AND interest_2.meta_name = 'interest_2'
            JOIN
                `storage_varchars` AS `interest_3`
            ON
                interest_3.user_id = users.id AND interest_3.meta_name = 'interest_3'
            JOIN
                `storage_varchars` AS `interest_4`
            ON
                interest_4.user_id = users.id AND interest_4.meta_name = 'interest_4'
            JOIN
                `storage_varchars` AS `interest_5`
            ON
                interest_5.user_id = users.id AND interest_5.meta_name = 'interest_5'
            JOIN
                `storage_varchars` AS `interest_6`
            ON
                interest_6.user_id = users.id AND interest_6.meta_name = 'interest_6'
            JOIN
                `payments` AS `address`
            ON
                address.user_id = users.id 

これを使用して、Haversine 式を使用して最も近い距離で検索したいと思います。

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

どうすれば2つにマージできますか?

よろしく

4

1 に答える 1