Php 复杂的mysql查询需要对结果进行排序
我有3个mysql表。我想以d_money的降序显示特定日期(如第1天、第2天、第3天)的团队排行榜 首先,我在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(); $
$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