У меня есть небольшая база данных, которая состоит из нескольких таблиц, которые я изложенные ниже:MySQL Выбор из несколько таблицы с предложением HAVING
Пользователей
| Name | Type | Extra |
| id | int(10) | Auto Increment
| emailAddress | varchar(150)
| socialNetwrk | enum('G','F','T')
| photoUrl | varchar(255)
| regLat | decimal(10, 8)
| regLng | decimal(11, 8)
| regDate | timestamp
| active | enum('1','0') | default = 1
место
| Name | Type | Extra
| id | int(10) | Auto Increment
| userID | int(10) | Foreign Key (users.id)
| lat | decimal(10, 8)|
| lng | decimal(11, 8)|
| timestamp | timestamp | CURRENT_TIMESTAMP
Я воспользовался следующим запросом, чтобы вернуть всех близких к пользователю пользователей (за исключением текущего лор пользователя), которые имеют активный счет:
$result = $mysqli->query("
SELECT DISTINCT l.userID
, u.active
, (3959 * acos(cos(radians($lat))
* cos(radians(lat))
* cos(radians(lng) - radians($lng))
+ sin(radians($lat))
* sin(radians(lat))
)
) distance
FROM locations l
JOIN users u
HAVING distance < 30
AND userID != $cur_user_id
AND active = 1
ORDER
BY RAND()
")or die($mysqli->error);
я возвращусь результаты без ошибок, однако я не могу получить его, чтобы включать только активные счета (с тегом 0 вместо 1).
Вы не ставите 'userID! = '$ Cur_user_id' AND active = '1'' в' has', а в предложение 'where'. – Daan
Использование предложения WHERE дает этот ответ: Неизвестный столбец «расстояние» в разделе «где» – jampez77
В стороне. Существует ** больше поддержки ** для функций 'mysql_ *', они [** официально устарели **] (https://wiki.php.net/rfc/mysql_deprecation) ** не поддерживается ** и будет [** удален **] (http://php.net/manual/en/function.mysql- connect.php # warning) в будущем. Вы должны обновить свой код с помощью [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/mysqli), чтобы обеспечить функциональность вашего проекта в будущем. – misterManSam