[英]How to combine same kind of queries with different variables
I'm trying to combine my SQL queries and fetch their results all at once.我正在尝试组合我的 SQL 查询并一次获取它们的结果。 I tried many JOIN methods but they all failed.
我尝试了很多 JOIN 方法,但都失败了。
As performance matters for my site, I don't want to fetch them seperately and want to combine all of them.由于性能对我的网站很重要,我不想单独获取它们并希望将它们全部结合起来。 Which method is the best way for that?
哪种方法是最好的方法? I need to learn a clear way of doing this, because I will implement all of my similar queries in same way.
我需要学习一种清晰的方法来做到这一点,因为我将以相同的方式实现所有类似的查询。
$kacinci = mysql_query("SELECT
COUNT(*) AS rank
FROM uye
WHERE bakiye>=(SELECT bakiye FROM uye WHERE ID='$profilid')");
$kacincix = mysql_fetch_array($kacinci);
$kackatinahafta = mysql_query("SELECT
COUNT(*) AS rank
FROM uye
WHERE kackatinahafta>=(SELECT kackatinahafta FROM uye WHERE ID='$profilid')");
$kackatinahaftax = mysql_fetch_array($kackatinahafta);
$nekadarhafta = mysql_query("SELECT
COUNT(*) AS rank
FROM uye
WHERE nekadarhafta>=(SELECT nekadarhafta FROM uye WHERE ID='$profilid')");
$nekadarhaftax = mysql_fetch_array($nekadarhafta);
$kackatinaay = mysql_query("SELECT
COUNT(*) AS rank
FROM uye
WHERE kackatinaay>=(SELECT kackatinaay FROM uye WHERE ID='$profilid')");
$kackatinaayx = mysql_fetch_array($kackatinaay);
$nekadaray = mysql_query("SELECT
COUNT(*) AS rank
FROM uye
WHERE nekadaray>=(SELECT nekadaray FROM uye WHERE ID='$profilid')");
$nekadarayx = mysql_fetch_array($nekadaray);
PS: I'm aware that mysql_query is deprecated and I need to upgrade to either PDO or mysqli_query. PS:我知道 mysql_query 已被弃用,我需要升级到 PDO 或 mysqli_query。 However, I need to use mysql_query for a special reason in this project.
但是,我需要在这个项目中出于特殊原因使用 mysql_query。
You can use conditional aggregation
with a join
to return all records in a single row:您可以使用带有
join
conditional aggregation
来返回单行中的所有记录:
select
sum(case when u.bakiye >= u2.bakiye then 1
else 0 end) bakiye_count,
sum(case when u.kackatinahafta >= u2.kackatinahafta then 1
else 0 end) kackatinahafta_count,
sum(case when u.nekadarhafta >= u2.nekadarhafta then 1
else 0 end) nekadarhafta_count,
...
from uye u
join uye u2 on u2.id = '$profilid'
This assume uye
has unique records on the id field.这假设
uye
在 id 字段上有唯一的记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.