2012-10-14 65 views
0

這一直困擾着我整天:在同一查詢中有2個計數但條件不同

我想在1個表中做2個計數。第一個計數如何總共許多商店,這裏的價格比tsuppliers.lowestprice低的第二應該算在總的商店

所以基本上我想第二個查詢合併成第一:

SELECT tshops.shopID, tshops.OfficialName, tsuppliershopinfo.ContactName, tsuppliershopinfo.ContactMail, Count(distinct tresults.pID) AS AantalVanpID 
FROM (tsupplierproducts 
    INNER JOIN tresults ON tsupplierproducts.pID = tresults.pID)  
    INNER JOIN (tsuppliershopinfo INNER JOIN tshops ON tsuppliershopinfo.shopID = tshops.shopID) ON tresults.shopID = tsuppliershopinfo.shopID 
WHERE (((tsupplierproducts.supplierID)=2)) AND tresults.starttime BETWEEN DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND DATE_ADD(CURDATE(),INTERVAL 1 DAY) 
GROUP BY tshops.shopID, tshops.OfficialName, tsuppliershopinfo.ContactName, tsuppliershopinfo.ContactMail; 

第二個(請注意where子句中只有一個額外條件):

SELECT tresults.shopID, Count(distinct tresults.pID) AS AantalVanpID 
FROM tsupplierproducts INNER JOIN tresults ON tsupplierproducts.pID = tresults.pID 
WHERE (((tsupplierproducts.supplierID)=2) AND ((tresults.Price)<tsupplierproducts.LowestPrice)) AND tresults.starttime BETWEEN DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND DATE_ADD(CURDATE(),INTERVAL 1 DAY) 
GROUP BY tresults.shopID; 

如何將第二個查詢合併到第一個查詢中?

謝謝!

回答

1
SELECT 
    tshops.shopID, 
    tshops.OfficialName, 
    tsuppliershopinfo.ContactName, 
    tsuppliershopinfo.ContactMail, 
    Count(distinct tresults.pID) AS AantalVanpID, 
    Count(distinct 
     case when tresults.Price < tsupplierproducts.LowestPrice then tresult.pID end 
     ) as AantalVanpID_2 
FROM 
    tsupplierproducts 
    INNER JOIN tresults ON tsupplierproducts.pID = tresults.pID 
    INNER JOIN tsuppliershopinfo ON tresults.shopID = tsuppliershopinfo.shopID 
    INNER JOIN tshops ON tsuppliershopinfo.shopID = tshops.shopID 
WHERE 
    tsupplierproducts.supplierID = 2 
    AND 
    tresults.starttime BETWEEN 
     DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND DATE_ADD(CURDATE(),INTERVAL 1 DAY) 
GROUP BY 
    tshops.shopID, 
    tshops.OfficialName, 
    tsuppliershopinfo.ContactName, 
    tsuppliershopinfo.ContactMail 
+0

1個詞語:awesome。謝謝!查詢運行了將近一秒鐘。你建議從它看出來加快速度嗎? – kay10

+0

@ kay10視圖不會影響性能。它只會使在多個上下文中使用查詢變得更加容易。 –

+0

@ kay10如果運行時間比發佈另一個問題包括解釋結果和表結構包括索引 –

相關問題