Поиск по широте и долготе MYSQL PDO с несколькими предложениями inPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Поиск по широте и долготе MYSQL PDO с несколькими предложениями in

Сообщение Anonymous »

Я не могу ломать голову над тем, как составить этот SQL-запрос.

У меня есть 3 таблицы.

Таблица пользователей
  • user_id
  • имя
  • картинка
    и т. д.
tag_ref таблица
  • user_id
  • tag_id
таблица геолокации
  • user_id
  • геолат
  • геолон
Что мне нужно уметь, так это находите пользователей по местоположению и по тегам, которые они с ними связали. У меня оба запроса работают отдельно.

Вот что я использовал для запроса местоположения:

Код: Выделить всё

$sql_search_people = "SELECT user_id, ( 3959 * acos( cos( radians(?) ) * cos( radians( geolat ) ) * cos( radians( geolon ) - radians(?) ) + sin( radians(?) ) * sin( radians( geolat ) ) ) ) AS distance FROM geolocation
HAVING distance < '25'";
Затем мне нужно отфильтровать результаты по tag_id из таблицы tag_ref. Пользователи могут выполнять поиск по нескольким тегам. Я сделал это отдельно здесь:

Код: Выделить всё

$sql_search_people = "SELECT b.user_id, b.name, b.picture, b.tagline, b.genres FROM tag_ref AS a LEFT JOIN users AS b ON a.user_id = b.user_id WHERE a.tag_id IN ($in) GROUP BY a.user_id";
Теперь мне просто нужно выяснить, как объединить эти два запроса в один запрос. Чего я не могу понять! Я пробовал соединения и подзапросы, но мне очень трудно их понять.

Буду очень признателен за любую помощь.

** ОБНОВЛЕНИЕ **

Поиграв еще немного, мне удалось заставить это работать:

Код: Выделить всё

    $sql_search_people = "SELECT a.user_id, b.user_id, c.user_id, c.tag_id, b.name, ( 3959 * acos( cos( radians(?) ) * cos( radians( geolat ) ) * cos( radians( geolon ) - radians(?) ) + sin( radians(?) ) * sin( radians( geolat ) ) ) ) AS distance FROM geolocation AS a RIGHT JOIN tag_ref AS c ON a.user_id = c.user_id RIGHT JOIN users AS b ON a.user_id = b.user_id WHERE c.tag_id IN ($in) HAVING distance < '25' ";
Но, конечно, это дублирует результаты, если у пользователя есть более одного тега. Когда я добавляю группу по user_id, запрос завершается неудачно?

Подробнее здесь: https://stackoverflow.com/questions/501 ... -in-clause
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Поиск пересечения двух геодезических линий в широте и долготе
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Поиск пересечения двух геодезических линий в широте и долготе
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Получить название страны по широте и долготе
    Anonymous » » в форуме Php
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как получить адрес по широте и долготе в Django GeoIP?
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Расчет оценки BLEU между предложениями-кандидатами и эталонными предложениями в Python
    Anonymous » » в форуме Python
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»