需要具有maixmum计数的唯一客户,根据高优先级优先



我有一个表,其中客户端具有从高到低的优先级。我想先看到最高优先级的唯一客户端。这是我现在的桌子。

我想看到像这样的输出

试试这个。这将根据您的要求进行

SELECT COUNT(id) AS coun,`client`,priority FROM `pi` 
WHERE  priority='high' GROUP BY `client`,priority ORDER BY coun DESC

如果你需要和我上面写的一样的回复。

$result=mysql_query(SELECT*FROM Tablename WHERE Priority='high'AND client='a');$num_rows=mysql_num_rows($result);

echo$num_rows;

我认为这有帮助。。。

解释

好吧,我想我明白你的要求了,如果我错了,请纠正我:

您希望获得数据库中每个客户端的高优先级条目的数量,即对于客户端"a",您需要数字"3",因为"a"有3个高优先级条目。客户"b"只有一个,所以您希望为他返回数字"1"。

实施

为此,我们需要使用PHP。让我们从查询数据库开始:

SELECT client, priority FROM pi ORDER BY client

查询为每个表行中的clientpriority列选择值。它是按client列排序的,因此所有客户端都被分组在一起——这在以后会很重要

现在,我们要做的是循环遍历查询中的每个结果。只要client相同,并且priority为高,我们就增加一个计数器。当client发生变化时(即,我们到达不同的客户端),我们回显client的值和计数器,从而创建OP想要的表。然后我们重置计数器,并开始为新客户端做同样的事情。

代码

以下是您的问题的最终PHP代码:

<?php
$c = mysqli_connect("localhost","root","","db");
$q = "SELECT client, priority FROM pi ORDER BY client";
$r = mysqli_query($c,$q);
$a = mysqli_fetch_assoc($r);
$client = $a["client"];
$count = 0;
echo "<table><tr><td>Client</td><td>Priority</td></tr>";
while ($a!=null) {
if ($a["client"]!=$client) {
echo "<tr><td>$client</td><td>$count</td></tr>";
$client = $a["client"];
$count = 0;
}
if ($a["priority"]=="high") {
$count++;
}
$a = mysqli_fetch_assoc($r);
}
echo "<tr><td>$client</td><td>$count</td></tr></table>";
?>

最新更新