2011-01-13 13 views
1

私はこのクエリを持っています。ただし、minutesは、FROM句またはサブクエリに含まれていないSELECT句にのみ表示されます。minutes > 30のような条件がWHERE句に認識されません。SQLクエリは、問題

これを修正するにはどうすればよいですか?おかげ

+1

どちらか私は明らかhere..but uが追加できない何かが欠け 'とTIMESTAMPDIFF(MINUTE、l.lead_date_received、NOW())していますあなたのwhere句に> 30? – 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は共通テーブル式をサポートしていない –