2011-01-19 10 views
1

slot_leftが最大の行を1つ選択する必要があります。試しましたスロットが最も大きい行を選択

for ($i=1;$i<3;$i++) { 
    $sql5 = "SELECT * from user u where (
     select max(slot_left) from company c,user u 
     where c.id=u.company_id and c.id='$name' 
    )"; 
    $result5 = mysqli_query($link, $sql5) or die(mysqli_error($link)); 
    while($row=mysqli_fetch_array($result5)) { 
     // echo the id which the slot_left is the biggest  
     echo $i['slot_left']; 
    } 
} 

まだできません。助けてください!

+0

コードにフォーマットを追加してください。 – amosrivera

+0

echo $ i ['slot_left']; ...正しいとは言えません、おそらく$ row ['slot_left'] – Paul

+0

あなたの内部クエリには閉じた括弧がありませんか? –

答えて

0
  1. SQLが可能です。 DBからすべての行を選択します。

    $ sql5 = "会社c、ユーザーuからのAS slot_left c.id = u.company_idおよびc.id = '$ name' GROUP by u.company_id";

  2. 変数$ Iを設定していないクエリで使用

  3. の$ name変数は配列ではありません。配列は$ rowです

    echo $ row ['slot_left'];

0

クエリではGROUP BYを使用する必要があります。 ループでのクエリの実行はお勧めしません。パフォーマンスを指定します。

これを試してください。

$sql5 = "select c.id, max(slot_left) from company c,user u 
     where c.id=u.company_id and c.id='$id' GROUP by c.id"; 

    $result5 = mysqli_query($link, $sql5) or die(mysqli_error($link)); 
    while($row=mysqli_fetch_array($result5)) { 
     echo $row['slot_left']; 
    } 
関連する問題