2 つの MySQL ステートメントをマージしようとしています。これはほぼ解決していると思いますが、以下の太字のテキストを参照して、「#1054 - 'field list' の不明な列 'lat'」が表示されます。
latとlngのテキストを ""、''、さらには `` で囲んでみましたが、効果はありませんでした。
SELECT post_attributes_3.value AS name, clean, post_attributes.value AS lat, post_attributes_1.value AS lng, post_attributes_2.value AS category, ( 3959 * acos( cos( radians('%s') ) * cos( radians( **lat** ) ) * cos( radians( **lng** ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( **lat** ) ) ) ) AS distance
FROM post_attributes AS post_attributes_3 INNER JOIN ((post_attributes AS post_attributes_1 INNER JOIN (posts INNER JOIN post_attributes ON posts.id = post_attributes.post_id) ON post_attributes_1.post_id = posts.id) INNER JOIN post_attributes AS post_attributes_2 ON posts.id = post_attributes_2.post_id) ON post_attributes_3.post_id = posts.id
WHERE (((post_attributes_3.name)="name") AND ((post_attributes_2.name)="category_id") AND ((post_attributes.name)="lat") AND ((post_attributes_1.name)="lng"))
HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20;
以下に組み合わせた2つのSQLステートメント:
SELECT name, clean, lat, lng, category, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM categorize HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20;
と
SELECT post_attributes_3.value AS name, clean, post_attributes.value AS lat, post_attributes_1.value AS lng, post_attributes_2.value AS category
FROM post_attributes AS post_attributes_3 INNER JOIN ((post_attributes AS post_attributes_1 INNER JOIN (posts INNER JOIN post_attributes ON posts.id = post_attributes.post_id) ON post_attributes_1.post_id = posts.id) INNER JOIN post_attributes AS post_attributes_2 ON posts.id = post_attributes_2.post_id) ON post_attributes_3.post_id = posts.id
WHERE (((post_attributes_3.name)="name") AND ((post_attributes_2.name)="category_id") AND ((post_attributes.name)="lat") AND ((post_attributes_1.name)="lng"));
これら 2 つの MySQL ステートメントは個別に問題ありませんが、AS ステートメントの使用に関係している可能性があります。
更新: ご協力ありがとうございます。しかし、この選択クエリの使用方法のために、MySQL ビューを作成し、それを使用して最初の SQL コマンドと同様の SQL コマンドを実行することにしました。