我一直无法使我的查询工作,并希望得到帮助。在较高的层面上,我试图查询用户表并根据一组标准返回结果+加上用户在指定英里半径范围内的事实或者还返回具有相同指定标准的用户的结果并忽略英里半径要求。
指定的标准'我上面说的是
u.activated = 1 AND u.type LIKE ('%red%')
以下是我的查询,我知道并不像我喜欢的那样工作
SELECT u.online, u.total_spend, u.name, u.address, u.city, u.state, u.zip, u.type,
u.activated, ( 3959 * ACOS( COS( RADIANS( 42.459080 ) ) * COS( RADIANS( u.lat ) ) * COS( RADIANS( u.lng ) - RADIANS( - 83.934013 ) ) + SIN( RADIANS( 42.459080 ) ) * SIN( RADIANS( u.lat ) ) ) ) AS distance,
t.username, COUNT( t.active ) AS reviews
FROM testimonials AS t
RIGHT JOIN users AS u ON ( t.username = u.username )
WHERE u.activated =1
AND u.type LIKE (
'%red%'
)
AND (
u.online =1
OR u.online =0
)
GROUP BY IFNULL( t.username, UUID( ) )
HAVING distance < '15'
ORDER BY total_spend DESC
LIMIT 0 , 30
我意识到HAVING操作符可以处理已经拉出的数据,这就是问题所在。我不明白的是如何在我忽略距离要求的情况下提取数据,而是将用户拉到u.online = 1并将它们全部包含在同一数据集中
提前感谢您的帮助!