Я написал комплексный запрос mysql, который не возвращает все запрошенные данные. Кажется, что INNER JOIN работает некорректно. Этот запрос возвращает правильный набор результатов, я просто пропускаю столбцы из объединенной таблицы.Mysql SELECT запрос HAVING в сочетании с INNER JOIN WHERE, не отображающий все запрошенные данные
Мои запросы:
SELECT Table1.Col1, Col2, Col3, Col4, Col5, Col6, (6371 * acos(cos(radians(?))
* cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?))
* sin(radians(lat)))) AS distance
FROM Table1
INNER JOIN Table2
ON Table1.Col1 = Table2.Col1
WHERE TABLE2.Col2 =?
AND Table2.Col3 =?
HAVING distance < ?
ORDER BY distance
Мой результат содержит только значения из Table1
, почему не INNER JOIN работает?
EDIT: Я изменил свой запрос на это на основе ответа P.Jairaj, и это, кажется, работает для меня:
SELECT T1.Col1, T1.Col2, T1.Col3, T1.Col4, T1.Col5, T1.Col6, T2.Col1,
(6371 * ACOS(COS(RADIANS('?')) *
COS(RADIANS(lat)) * COS(RADIANS(lng) - RADIANS('?')) +
SIN(RADIANS('?')) * SIN(RADIANS(lat)))) AS distance
FROM T1, T2
WHERE T1.Col1 = T2.Col1
AND T2.Col2 = '?'
AND T2.Col3 = '?'
HAVING distance < '?'
ORDER BY distance
попробовать 'левое внешнее join' – RamRaider
Вы должны войти в привычку [принимать ответы] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work), которые помогут вам решить ваши проблемы. –
Ответы, которые я привел ближе к решению, но не были на 100% правильными. Мне показалось, что если бы я принял их как ответ, это смутило бы будущих посетителей ... – user3055582