2011-01-19 6 views
1

slot_left가 가장 큰 행을 하나 선택해야합니다. 나는 시도했다슬롯이 가장 큰 행 선택

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에서 최대 슬롯 수 (slot_left)를 선택하십시오. 여기서 c.id = u.company_id 및 c.id = '$ name'GROUP by u.company_id";

  2. 변수 $의 난을 설정하지 쿼리에 사용

  3. $ 이름 변수는 배열이 아니다. 배열은 $ 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']; 
    }