如何解决这个mysql查询

时间:2014-01-01 07:34:52

标签: php mysql pdo

我有3个mysql表

  • user(u_id(p),name)
  • team(t_id(p),u_id(f),t_name,t_money,days_money)
  • history(t_id(f),day,d_money)

现在我必须使用php显示排行榜。

我试过了。

SELECT t_id FROM team;

得到了结果。

然后, 在for循环中

foreach($tid_all as $tid)
{
     $que = $db_con->prepare("SELECT d_money, t_name FROM team, history WHERE t_id= '".$tid['t_id']."' && 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>";
         }
}

但它没有用。任何解决方案?

解决方案1:  我试过这个并且有效。

`SELECT d_money, t_name FROM team, history WHERE history.t_id=$tid['t_id'] AND team.t_id=history.t_id`

是否正确?

感谢大家的帮助。

问题:是否可以通过d_money订购结果表?我希望它按降序排列。

5 个答案:

答案 0 :(得分:1)

MySQL Query中没有&&。将<\ n> AND 运算符替换为您的查询。

答案 1 :(得分:1)

既然你想从两个表中获取数据,那么JOIN这两个表而不是用循环来表示:

SELECT
  h.d_money,
  t.t_name
FROM team AS t
INNER JOIN history AS h ON t.t_id = h.t_id;

运行此单个查询一次,您将获得所需内容。您还可以在查询结尾处添加WHERE子句。

答案 2 :(得分:1)

试试这个

SELECT d_money, t_name FROM team, history WHERE team.t_id= '".$tid['t_id']."' AND history.t_id= '".$tid['t_id']."' && day='1'

答案 3 :(得分:1)

&&替换为AND。请尝试以下操作:

"SELECT d_money, t_name FROM team, history WHERE t_id= '".$tid['t_id']."' AND day='1' order by d_money DESC "

答案 4 :(得分:1)

可以替换

吗?
 WHERE t_id= '".$tid."' AND day='1'

而不是

 WHERE t_id= '".$tid['t_id']."' && day='1'