如何将相同类型的查询与不同的变量组合在一起

时间:2016-03-09 00:39:04

标签: php mysql sql

我正在尝试组合我的SQL查询并一次性获取结果。我尝试了很多JOIN方法,但都失败了。

由于性能对我的网站很重要,我不想单独获取它们并想要将它们全部组合在一起。哪种方法最好的方法呢?我需要学习一种明确的方法,因为我将以同样的方式实现所有类似的查询。

$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:我知道不推荐使用mysql_query,我需要升级到PDO或mysqli_query。但是,我需要在此项目中使用mysql_query作为特殊原因。

1 个答案:

答案 0 :(得分:1)

您可以conditional aggregation使用join来返回一行中的所有记录:

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'

这假设uye在id字段上有唯一记录。