Мне нужно вставить новую строку в таблицу1 для каждой строки, найденной в таблице2. Проблема в том, что select в таблице2 возвращает больше полей, чем требуется для вставки, но полезны в where where select.MYSQL Вставить в выбранные поля фильтрации
Этот запрос показывает пользователю все магазины вокруг, в зависимости от их (магазинов) диапазона (определенные в таблице магазинах)
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)
где я поставил расчет расстояния для условия и упорядоченности? – Scream
Извините, пропустил дистанцию. Я думаю, что проще всего использовать дополнительный select для выполнения предложений, а затем выбрать из него необходимые столбцы (другой вариант - разместить этот длинный вырез в предложениях HAVING и ORDER). См. Мой измененный пост выше. – Giles