Как я могу объединить эти два sql-запроса по одному запросу?
$query2 ="select raiting.rated_user,avg(raiting.rate) as 'avg_rating' from raiting,users where
raiting.rated_user=user_id group by raiting.rated_user order by avg(raiting.rate) desc";
$query = "SELECT 'user_id','name','email','degree','avatar','mobile','sex','nationality','nationalitycode','birthday_year','pr_hour','spicality','city','online','intro', (SQRT(POW((lat - $lat), 2) + POW((lang - $lang), 2)) * $multiplier) AS distance FROM users WHERE POW((lat - $lat), 2) + POW((lang - $lang), 2) < POW(($distance / $multiplier), 2) ORDER BY distance";
Используйте первый в качестве подзапроса во втором:
$query = "
SELECT
'user_id','name','email','degree','avatar','mobile'
,'sex','nationality','nationalitycode','birthday_year','pr_hour'
,'spicality','city','online'
,'intro'
, (SQRT(POW((lat - $lat), 2) + POW((lang - $lang), 2)) * $multiplier) AS distance
, r.'avg_rating'
FROM users
INNER JOIN (
select
raiting.rated_user
,avg(raiting.rate) as 'avg_rating'
from raiting
group by raiting.rated_user
) AS r on users.user_id = raiting.rated_user
WHERE POW((lat - $lat), 2) + POW((lang - $lang), 2) < POW(($distance / $multiplier), 2)
ORDER BY distance
";
SQL-запросы могут быть распределены по нескольким строкам, упростить их поддержку
Примите меры предосторожности, чтобы избежать инъекции SQL
Вы можете попробовать это также:
$query = "SELECT 'user_id','name','email','degree','avatar', 'mobile','sex','nationality', 'nationalitycode','birthday_year','pr_hour',
'spicality','city','online','intro',t1.rated_user,t1.avg_rating
(SQRT(POW((lat - $lat), 2) + POW((lang - $lang), 2)) * $multiplier) AS distance
FROM users inner join (select raiting.rated_user,avg(raiting.rate) as 'avg_rating' from raiting
group by raiting.rated_user
order by avg(raiting.rate) desc) t1 on users.user_id = t1.rated_user
WHERE POW((lat - $lat), 2) + POW((lang - $lang), 2) < POW(($distance / $multiplier), 2)
ORDER BY distance";