2013-03-11 1 views
0

이전에 해결해야 할 SQL 쿼리로 stackoverflow 사용자 JW로부터 큰 도움을 받았습니다. 그러나 요구 사항은 원래의 대답 이후 다소 변경되었습니다.변수가 쿼리 결과의 날짜 범위를 설정할 수 있도록 sql 쿼리 변경

지난 30 일 내에 결과를 찾는 쿼리 대신 웹 사이트의 관리자에게 보고서를 처리해야하는 일 수를 선택할 수있는 옵션을 제공해야합니다. 따라서 30 일이 될 수 있습니다. 지금은 주어진 숫자 여야합니다.

나는 PHP 스크립트와 텍스트 엔트리를 가지고 있는데, 사용자는 필요한 일수를 입력 할 수 있으며 x 일로 돌아가는 날짜를 계산합니다. 이 날짜는 변수에 저장됩니다. 다른 보고서에서도 같은 방법을 사용하며 매우 효과적입니다.

은 JW 의해 작업으로 원래의 쿼리는 : 난 그냥 HAVING MAX 대신에 그것을 넣어 어차피

WHERE ci.customers_info_date_of_last_logon >= '" . $ndate . "' 

:

SELECT c.customers_id 
FROM customers c 
INNER JOIN customers_info ci 
ON c.customers_id = ci.customers_info_id 
LEFT JOIN codes_redeem_history pc 
ON c.customers_id = pc.customer_id 
WHERE pc.customer_id IS NULL 
GROUP BY c.customers_email_address 
HAVING MAX(ci.customers_info_date_of_last_logon) <= subdate(now(),INTERVAL 30 DAY) 

내가 지금의 라인을 따라 뭔가를 사용해야합니다 섹션은이 SQL 구문 오류를 생성로

나는 시도 않았다

WHERE pc.customer_id IS NULL 
AND WHERE ci.customers_info_date_of_last_logon >= '" . $ndate . "' 
GROUP BY c.customers_email_address 

하지만 작동하지 않았습니다. 내가 A10 일 보고서를 선택하면 정보를 들어, $의 ndate는 '20130301'

감사합니다, 스티브

답변

0

와우,

내가 내 바보 같은 머리를 가지고 있어야합니다

... 해답이 될 것입니다 지금 내게 그렇게 분명하다.

WHERE pc.customer_id IS NULL 
AND ci.customers_info_date_of_last_logon >= '" . $ndate . "' 
GROUP BY c.customers_email_address 

사용할 수 없으며 어디에서 할 수 있습니까?