2011-04-12 3 views
0

오늘 날짜를 기준으로 결과를 출력하고 싶습니다. 문제는 결과가 1 개의 결과 만 표시합니까?mysql 쿼리 만 1 결과 표시

database report table: 
id | r_amount | id_therapist | date | time | t_tanning | t_deep 

// this query works fine echoing all the result if i use while loop 
$today = date('Y-m-d'); 
(1) $q = $db->query("SELECT * FROM report WHERE date='$today' ORDER BY date ASC") 

// this query only show 1 output result? 
(2) $q = $db->query("SELECT *, SUM(IF(t_tanning LIKE 'Pro Tan%', r_amount, 0)) AS totalProTan FROM report WHERE date='$today' ORDER BY date ASC") 

while($r = $q->fetch_array(MYSQLI_ASSOC)) : 
    // (1) echoing all result from database 
    echo $r['r_amount'].'<br>'; 
    // (2) echoing only 1 result???? 
    echo $r['totalProTan'].'<br>'; 
endwhile; 
+2

당신은 우리가 ** 아무 생각도하지 않는다는 것을 알게됩니다 ** 당신의 데이터베이스가 어떻게 생겼는지, 그 안에 무엇이 있습니까? – Neal

+0

@Neal sorry :) 실제로 데이터베이스 테이블을 보여줄 필요가 없습니다. (단지 쿼리 문제 – tonoslfx

답변

2

, 당신은

같은 것을해야 할 것이다

SELECT ... WHERE DATE (date) = CURDATE()

쿼리에 curdate()을 사용하고 있습니다. PHP에서 날짜 값을 생성 할 필요가 없습니다. MySQL은 완벽하게 그렇게 할 수 있습니다.

0

집계 함수 SUM을 사용하면 단일 결과가 발생합니다. 데이터베이스에 모든 행을 가져와 값을 합산하고 값을 제공하도록 요청합니다.

많은 값 그룹에 대한 결과를 보려면 group by 절을 추가해야합니다.

1

GROUP BY 문을 두 번째 SQL 문에 추가하십시오. date 필드 유형 datetime의 경우

  • 원하는 elemnts의 키에 의해 그룹이 최종 결과에 표시하도록한다
+0

나는 그 중 하나를 시도했습니다. .하지만 나는 모든 결과를 GROUP BY가 아니라고 보여주고 싶다. :) – tonoslfx

+0

@ boyee007 그러면 SUM 함수의 효과를 잃어 버리게된다. 그것을 제거하거나 하나 이상의 행을 표시하기 위해 결과에 대한 GROUP BY 문을 추가하십시오 – BigFatBaby

+0

선택의 여지가 없습니다;) – tonoslfx