2011-01-13 2 views
1

나는이 쿼리가 있습니다. 그러나 보시다시피 minutesFROM 절 또는 하위 쿼리가 아닌 SELECT 절에만 표시되며 minutes > 30과 같은 내 조건은 WHERE 절에서 인식되지 않습니다.SQL 쿼리 문제

어떻게 수정합니까? 감사합니다

+1

을 어느 내가 뭔가 분명 here..but u는 추가'그리고 TIMESTAMPDIFF 수 없습니다 실종 (NOW, l.lead_date_received, 분()) > 30'을 where 절에 추가 하시겠습니까? – InSane

+0

@InSane : 맞아, 그 시점을 놓쳤다 :(감사합니다 – Sarfraz

답변

2
SELECT l.lead_id, l.lead_date_received, TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) AS minutes, s.admin_id, 
     a.name, a.email 
FROM leads l 
INNER JOIN sales_emails s 
ON  l.lead_id = s.lead_id 
INNER JOIN admin a 
ON  a.admin_id = s.admin_id 
WHERE NOT EXISTS (SELECT 1 FROM comments c WHERE l.lead_id = c.lead_id) 
AND TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) > 30 
ORDER BY minutes, l.lead_date_received DESC 

또는 다른 쿼리 추가 :

SELECT * 
from 
(
    SELECT l.lead_id, l.lead_date_received, TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) AS minutes, s.admin_id, 
     a.name, a.email 
FROM leads l 
INNER JOIN sales_emails s 
ON  l.lead_id = s.lead_id 
INNER JOIN admin a 
ON  a.admin_id = s.admin_id 
WHERE NOT EXISTS (SELECT 1 FROM comments c WHERE l.lead_id = c.lead_id) 
ORDER BY minutes, l.lead_date_received DESC 
) 
Where minutes > 30 
1
WITH Something as ( 
SELECT l.lead_id, 
     l.lead_date_received, 
     TIMESTAMPDIFF(MINUTE, l.lead_date_received, NOW()) AS minutes, 
     s.admin_id,   
     a.name, a.email 
FROM leads l 
INNER JOIN sales_emails s ON l.lead_id = s.lead_id 
INNER JOIN admin a ON a.admin_id = s.admin_id 
WHERE NOT EXISTS (SELECT top 1 1 FROM comments c WHERE l.lead_id = c.lead_id) 
) 
Select * FROM Something 
WHERE minutes > 30 
ORDER BY minutes, lead_date_received DESC 
+1

mysql은 공통 테이블 표현식을 지원하지 않습니다. –