2017-02-08 2 views
1

첫 번째, 두 번째 및 세 번째에 대해 동일한 값을 얻고 있습니다. 다음 줄은 제 1 행에있는 두 번째 열에 있어야하는 결과를 나에게줍니다.쿼리가 3 행에 대해 동일한 데이터를 반환합니다.

<?php 
require "db.php"; 
$sql = "select n_name, shortcut, IF(rank = 1>2, 2, shortcut) AS 1st, IF(rank = 1<2, shortcut, shortcut) AS 2nd, 
IF(rank = 3=3, 1, shortcut) as 3rd from team inner join nonsport on team.n_id = nonsport.n_id";       

$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("n_name"=>$row[0],"1st"=>$row[1], 
"2nd"=>$row[2], "3rd"=>$row[3])); 

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



mysqli_close($con); 

?> 

내 예상 출력은

예이다. 바로 가기는 a, b, c를 가지며 순위 a = 1 b = 2 c = 3;

그러면 1st = a, 2nd = b, 3rd = c;

은 무엇 메신저 점점

1 = A, 2 = A, 3 =이다;

은 그 다음 줄은

1 = B를, 2 = B를, 3 = B를 보여줍니다; 다음과 같이

+0

'rank = 1 <2' ?? 이것이 의도 한 것은 무엇입니까? – GurV

+0

난 그냥 그 선생님을 시도 – orange

답변

1
IF(rank = 1 > 2, 2, shortcut) 

그것은 해결 : rank 1 다음 rank = 1 다른 1에 해당

  • 경우 0
  • 0 또는 1이 2보다 클 수 있습니까? No.
  • 따라서 rank = 1 > 2은 항상 거짓으로 해석되며 IF의 출력은 갈증 매개 변수 즉 바로 가기입니다.
    IF(rank = 1 < 2, shortcut, shortcut) 
    

    이 하나 개를 반환

은 2 층과 3 PARAM으로 항상 바로 가기 모두 바로 가기입니다. 순위 3의 경우에는 본


IF(rank = 3 = 3, 1, shortcut) 

,

  • 다음 rank = 3 다른 0
  • rank = 3 (출력은 0 또는 1) (3)와 동일 할 수 1? No.
  • 따라서 rank = 3 = 3은 항상 false를 반환하므로 출력은 항상 세 번째 매개 변수, 즉 바로 가기입니다.

따라서 세 가지 기능이 모두 같은 값을 반환하는 이유는 무엇입니까?

예상되는 출력에 관해서는 논리를 완벽하게 설명하고 샘플 데이터와 예상 출력을 추가하여 질문을 편집하십시오.

+0

오 그게 어떻게 PHP에서 다른 쿼리가 작동합니까? 나는 그것을 몰랐다. 나는 그저 무작위로 물건을 넣었고 그 답을 얻기를 희망합니다. 감사합니다 – orange

+1

@ 얼라이언 uhmm 그건 PHP가 아니에요. –

+0

@orange - PHP가 아닌 MySQL 코드입니다. – GurV

관련 문제