2014-05-15 2 views
0

내가 트랜잭션 로그를 저장하는 데이터베이스를 가지고, 내가 그 일 및 그룹에 대한 모든 로그를 계산하고 싶은 그들 prod_id에 따라항목과 오늘 날짜를 기준으로 그룹화하는 방법 MySQL의

MySQL의 테이블 구조 :

테이블 이름 = products

+------+---------+------------+--------+ 
| ID | PROD_ID | DATE  | PERSON | 
+------+---------+------------+--------+ 
| 1 |  2 | 1400137633 |  1 | 
| 2 |  2 | 1400137666 |  1 | 
| 3 |  3 | 1400137125 |  2 | 
| 4 |  4 | 1400137563 |  1 | 
| 5 |  2 | 1400137425 |  2 | 
| 6 |  3 | 1400137336 |  1 | 
+------+---------+------------+--------+ 

MYSQL 코드 :

$q = 'SELECT count(ID) as count 
     FROM PRODUCTS 
     WHERE PERSON ='.$db->qstr($person).' 
      AND DATE(FROM_UNIXTIME(DATE)) = DATE(NOW())'; 
,

그래서 주어진 날짜의 항목 수입니다. 날짜는 다른 모든 항목과 동일하므로 그러나 나는 prod_id로 항목을 그룹화하고 싶습니다, 나는 GROUP BY PROD_ID를 시도했지만 그게 내가 원하는 것을주지 못했습니다. PROD_ID이 여러 개이고 날짜가 한 항목과 동일한 디스플레이 일 경우 그룹화하고 싶습니다.

그래서 여기에 출력 ($ Person = 1)이 있어야합니다. 2 + 2 + 2 = 1 +3 +4이므로 총계는 3이어야합니다.

제안 사항?

+1

ur 요구 사항을 이해할 수 없습니다. – AK47

+0

좋아, 1400137336이 오늘의 유닉스 타임 스탬프라고 가정 해 봅시다. (PROD_ID) 열에 같은 (prod_id)를 가진 여러 항목을 1로 그룹화하는 동안 나 (사용자) = 1에 할당 된 모든 항목을 계산하고 결과를 표시하고 싶습니다. 지금은 이해합니까? – user3620142

답변

0

COUNTPROD_ID과 함께 사용하십시오.

:

SELECT count(distinct PROD_ID) as count 
FROM PRODUCTS 
WHERE PERSON = 1 -- <---- change this with relevant variable 
    AND DATE(FROM_UNIXTIME (DATE)) = curdate(); 

그리고 난 당신이 값을 바인딩 Prepared Statement를 사용하는 것이 좋습니다.

+0

별개의 트릭을 만들었습니다. 고마워요. – user3620142

관련 문제