Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复杂的mysql查询需要对结果进行排序_Php_Mysql - Fatal编程技术网

Php 复杂的mysql查询需要对结果进行排序

Php 复杂的mysql查询需要对结果进行排序,php,mysql,Php,Mysql,我有3个mysql表。我想以d_money的降序显示特定日期(如第1天、第2天、第3天)的团队排行榜 首先,我在$tid\u arr中收集了所有t\u id。然后,对于每个t_id,我编写查询以获取t_name及其日期货币(针对特定的日期。这里是第1天)。它显示结果。但我希望对结果进行排序(按d_money的降序排列)。但是我找不到灵魂 $query = $con->prepare("SELECT t_id FROM team"); $query->execute(); $

我有3个mysql表。我想以d_money的降序显示特定日期(如第1天、第2天、第3天)的团队排行榜

首先,我在
$tid\u arr
中收集了所有
t\u id
。然后,对于每个
t_id
,我编写查询以获取
t_name
及其日期货币(针对特定的日期。这里是第1天)。它显示结果。但我希望对结果进行排序(按
d_money
的降序排列)。但是我找不到灵魂

 $query = $con->prepare("SELECT t_id FROM team");   
$query->execute();

$tid_arr = $query->fetchAll();



 echo "<table border='1'>";

foreach($tid_arr as $tid)
 {
    $que = $con->prepare("SELECT d_money, t_name FROM team, history WHERE history.t_id=$tid['t_id'] AND team.t_id=history.t_id` AND history.day='1'");
                     $que->execute();


                               while($info = $que->fetch(PDO::FETCH_NUM))
                              {

                                     echo "<tr>";
                                     echo  "<td>".$info[0]."</td>";
                                     echo  "<td>".$info[1]."</td>";
                                     echo "</tr>";
              }
}
                echo "</table>";
$query=$con->prepare(“从团队中选择t_id”);
$query->execute();
$tid_arr=$query->fetchAll();
回声“;
外汇($tid_arr as$tid)
{
$que=$con->prepare(“选择d_money,t_name FROM team,history WHERE history.t_id=$tid['t_id']和team.t_id=history.t_id`和history.day='1');
$que->execute();
而($info=$que->fetch(PDO::fetch_NUM))
{
回声“;
回显“$info[0]”;
回显“$info[1]”;
回声“;
}
}
回声“;

将Join和Order By子句添加到SQL语句中

echo "<table border='1'>";
$que = $con->prepare("SELECT T.t_id, H.d_money, T.t_name
                  FROM team T INNER JOIN history H ON T.t_id=H.t_id
                  WHERE H.day='1'
                  ORDER BY d_money DESC");
$que->execute();

while ($info = $que->fetch(PDO::FETCH_NUM)) {
 echo "<tr>";
 echo  "<td>".$info[0]."</td>";
 echo  "<td>".$info[1]."</td>";
 echo "</tr>";
}

echo "</table>";
echo”“;
$que=$con->prepare(“选择T.T\U id、H.d\U货币、T.T\U名称
从团队T内部连接历史H到T.T\u id=H.T\u id
其中H.day='1'
d_money DESC)订购;
$que->execute();
而($info=$que->fetch(PDO::fetch_NUM)){
回声“;
回显“$info[0]”;
回显“$info[1]”;
回声“;
}
回声“;

如果您想通过
d\u money
订购,然后
t\u id
,您可以使用以下查询。第一个查询是不必要的,应该删除

SELECT d_money, t_name FROM team a 
LEFT JOIN history b ON a.t_id=b.t_id
WHERE history.day='1' 
ORDER BY d_money DESC, t_id DESC

p、 s.
user
表未使用?

只需在查询结束时添加
ORDER BY d_money DESC
。这不起作用,我正在为每个查询逐个添加行。我明白你的意思。需要澄清的是:首先是通过
d\u money
订购,然后是
t\u id
还是相反?如果您将两个查询合并为一个查询,那么第一个查询可能没有必要。是的,不应该添加“用户”表。它可以工作,我认为这非常简单。我把这件事弄得很难,弄糊涂了。哈哈..谢谢你的帮助。在我们删除第一个选择和添加加入后,它应该可以工作
SELECT d_money, t_name FROM team a 
LEFT JOIN history b ON a.t_id=b.t_id
WHERE history.day='1' 
ORDER BY d_money DESC, t_id DESC