MySQL множественное осложнение внутреннего соединения - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть этот запрос.Что, кажется, дает мне осложнения.Это работает, если я уберу ограничение 3-х таблиц.Но мне нужно это третье табулирование, чтобы уточнить поиск, над которым я работаю.Моя проблема в том, что он не выдает мне ошибку, но не дает результатов, когда он должен дать по крайней мере 1 с данными, которые есть в моей БД.

SELECT loc.*, 
       a.firstname, 
       a.lastname, 
       a.profileimg,
       (((acos(sin((37.2790669*pi()/180)) * sin((`latitude`*pi()/180))+cos((37.2790669*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((-121.874722 - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` 
  FROM geo_locations loc
  JOIN memb_Info a ON a.mID = loc.mID
 WHERE a.firstname LIKE 'Lisa%' 
   AND loc.primaryAddress = '1' 
   AND memb_x.xName LIKE '%Monkey'
ORDER BY `distance` ASC

, если я удаляю

AND memb_x.xName LIKE '%Monkey'

Я получаю результаты без проблем, но в таблице memb_x есть столбец xName, который является своего рода фильтром, который я хочу применить к приведенному выше запросу, но я, похоже, растерялся в том, как мне следует это обрабатывать.Я пытался правильно объединить внутреннее соединение, но это не принесло мне никакой пользы, что привело к дублированию результатов и результатов, которые на самом деле не покрывали того, чего я пытался достичь.

Так что разбейте его.То, что я хочу сделать, - это выполнить радиальный поиск моих участников, чтобы они могли видеть других участников в этой области. Это изначально будет происходить из geo_locations, с которой я пытаюсь получить информацию из возвращенных идентификаторов, чтобы я мог ВНУТРИ присоединиться ктаблица memb_Info для имени пользователя, фамилия и т. д., один соединитель между всеми таблицами - это mID, который является идентификатором члена.Теперь у этого идентификатора участника также в третьей таблице есть пользователи, которые имеют схожие интересы или фильтры, поэтому я хочу уменьшить свои результаты на основе этих фильтров, и именно здесь я не строю свой запрос должным образом, и мне нужна помощь в его исправлении.

1 Ответ

1 голос
/ 21 февраля 2012

Я не уверен, что вы имеете в виду, но вам нужно вот так:

SELECT loc.*, 
   a.firstname, 
   a.lastname, 
   a.profileimg,
   (((acos(sin((37.2790669*pi()/180)) * sin((`latitude`*pi()/180))+cos((37.2790669*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((-121.874722 - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` 
FROM geo_locations loc
JOIN memb_Info a ON a.mID = loc.mID 
JOIN memb_x x ON x.mID=loc.mID
WHERE a.firstname LIKE 'Lisa%' 
AND loc.primaryAddress = '1' 
AND x.xName LIKE '%Monkey'
ORDER BY `distance` ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...