2017-02-08 14 views
1

1番目、2番目、3番目の値が同じになります。そして、次の行は、第1行目にある第2列にあると思われる結果を私に与えます。クエリは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;

は何イムなっ

第一= A、第二= A、第三=です。

その後、次の行が

1 = bの、2 = bの、3 = bを示します。

+0

'rank = 1 <2' ??これは何をするつもりですか? – GurV

+0

私はちょうどその先を試した – orange

答えて

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

次のように解決:

  • rankrank = 1その後、1の場合は他の1 0
  • 0または1のどちらかが2よりも大きくすることができるのですか?
  • したがって、rank = 1 > 2は常に偽に解決され、IFの出力は喉のパラメータ、つまりショートカットになります。

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

この1つは、両方のショートカットいる2番目と3番目のparamとして常にショートカットを返します。

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

  • ランクが3次にrank = 3である場合は、他の1 0
  • rank = 3(出力0または1)が3に等しくすることができるのですか?いいえ
  • したがって、rank = 3 = 3は常にfalseを返します。したがって、出力は常に3番目のパラメータ、つまりショートカットです。

なぜ3つの関数がすべて同じ値を返すのですか?

期待される出力に関しては、ロジックの完全な説明とともにサンプルデータと予想出力を追加するために質問を編集してください。

+0

ああ、どのように他のクエリは、PHPで動作しますか?私はそれを知りませんでした。私はちょうどそこにランダムなものを置き、答えを得ることを望みます。ありがとう – orange

+1

@orange uhmmそれはPHPではありません。 –

+0

@orange - それはPHPではなく、MySQLコードです。 – GurV

関連する問題