繁体   English   中英

我的选择查询返回 3 行的相同数据

[英]My select query returns same data for 3 rows

我在第 1、第 2 和第 3 次获得相同的值。 然后下一行给了我应该在第一行的第二列中的结果。

<?php  
 require "db.php"; 
 $sql = "
SELECT e_name
     , IF(t_rank = 1, a_shortcut, a_shortcut) AS 1st
     , IF(t_rank = 1, a_shortcut, a_shortcut) AS 2nd
     , IF(t_rank = 3, a_shortcut, a_shortcut) AS 3rd    
  FROM team t
  JOIN event e
    ON t.EID = e.EID
";                         

 $con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name); 

$result = mysqli_query($con,$sql);


 $response = array();

while($row=mysqli_fetch_array($result))
{
array_push($response, array("e_name"=>$row[0],"1st"=>$row[1], 
"2nd"=>$row[2], "3rd"=>$row[3]));

} 
echo json_encode (array("nresults"=>$response));



mysqli_close($con);

?>

我的预期输出是

例子。 Shortcut has a, b, c and they have rank a =1 b =2 c =3;

然后1st = a, 2nd = b, 3rd = c;

我得到的是

1st = a, 2nd = a, 3rd = a;

然后下一行显示

1st = b, 2nd = b, 3rd = b;
$sql = "select e_name
 , IF(t_rank = 1,'A',NULL) AS 1st
 , IF(t_rank = 2,'B',NULL) AS 2nd
 , IF(t_rank = 3,'C',NULL) as 3rd    
 from team t
join event e on t.EID = e.EID";          

这将以 A,B,C 格式返回排名..当条件匹配时,它将转换为 A,B,C 格式

我认为你需要改变你的查询如下:

$sql = "选择 e_name, CASE t_rank 当 t_rank = 1 然后 a_shortcut 当 t_rank = 2 然后 b_shortcut 当 t_rank = 3 然后 c_shortcut END 作为团队内部加入事件的排名。EID = event.EID";

然后使用排名字段。 以 team.EID = event.EID 上的团队内部加入事件中的 matching_tag 结束”;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM