Вы можете объединить оба запроса в один, избегая циклических обращений к серверу БД.
Назначьте ранги каждой из 7 строк после упорядочивания с помощью переменной SQL. Теперь sum()
все значения путем фильтрации строк, имеющих ранг 1
или 7
. Если rank = 1
, добавьте его отрицательное состояние.
В качестве примечания, если $thiscoin
исходит от пользователя, вы можете лучше делать параметризованные запросы, чтобы избежать атак SQL инъекций, используя PDO
.
Запрос:
select sum(if(rank = 1,-mcr,mcr)) as diff_mcr
from (
SELECT @rank := @rank + 1 as rank,market_cap_rank as mcr
FROM intelligence,(select @rank := 0) r
WHERE id = '$thiscoin'
order by day desc limit 0,7
) derived
where rank = 1 or rank = 7
Код:
Это будет просто
$rankdiff = mysqli_fetch_row(mysqli_query($conn, $sql))[0];