0

table2 で見つかった各行に対して、table1 に新しい行を挿入する必要があります。問題は、table2 の select が、挿入に必要な数よりも多くのフィールドを返すことですが、select の where 句で役立ちます。

このクエリは、ユーザーの (店舗) 範囲 (テーブル store で定義) に基づいて、周辺のすべての店舗をユーザーに表示します。

SELECT destination.poi_id,
  6371 * 
     2 * 
     ASIN(
       SQRT(
         POWER(SIN((use_lat - poi_lat) * PI()/180 / 2), 2) +
         COS(use_lat * pi()/180) * 
         COS(poi_lat * pi()/180) *
         POWER(SIN((use_lon - poi_lon) * PI()/180 / 2), 2)
       )
     ) AS distance,
  destination.poi_range AS range
FROM stores destination, users origin
WHERE origin.use_id=userid
  AND destination.poi_lon BETWEEN lon1 AND lon2
  AND destination.poi_lat BETWEEN lat1 AND lat2
  HAVING distance <= range
ORDER BY distance;

ここで、これらの結果をこの構造を持つテーブルに入れる必要があります

user_id  INTEGER
poi_id   INTEGER
ins_date TIMESTAMP (CURRENT TIMESTAMP)

やり方がわかりません、教えていただけますか?

INSERT INTO table (user_id, poi_id)
SELECT ... ? (too many fields in select)
4

2 に答える 2