我有四個表格,Companies,Vehicles,Quotes和PhoneRequests。如何根據時間從兩個單獨的表中獲取計數?
公司可能會在其車輛上收到報價和請求。
每個報價和要求都加蓋了一段時間。
我想找到行情的數量,並要求各公司每月在收到只要要麼行情或請求的數量是大於0
更大,我不知道該怎麼組這樣來自兩個獨立表格的月份是相同的。
這裏是我到目前爲止有:
SELECT
company.name `company`,
vehicle.name `vehicle`,
DATE_FORMAT(COALESCE(quote.qtime, pr.date),'%Y-%m') `month`,
COUNT(DISTINCT quote.qid) `quotes`,
COUNT(DISTINCT pr.id) `phone_reqs`
FROM companies company
LEFT JOIN vehicles vehicle ON vehicle.compid=company.cid
LEFT JOIN quote_vehicle qv ON qv.vehicle_id=vehicle.vid
LEFT JOIN quotes quote ON qv.quote_id=quote.qid
LEFT JOIN phone_requests pr ON pr.vehicle_id=vehicle.vid AND quote.qtime IS NULL OR DATE_FORMAT(quote.qtime,'%Y-%m')=DATE_FORMAT(pr.date,'%Y-%m')
GROUP BY
company.cid, `month`
HAVING
quotes > 0 OR phone_reqs > 0
ORDER BY
`month` DESC, `company` ASC
但它似乎是在歸結到phone_reqs
錯了公司,因爲AND quote.qtime IS NULL OR DATE_FORMAT(quote.qtime,'%Y-%m')=DATE_FORMAT(pr.date,'%Y-%m')
位的可能。我不知道如何確保報價和請求在同一個月發生。
現在嘗試了這一點。其中有一些錯誤,但我會看看我是否可以使其工作。感謝您的建議。 – mpen 2013-05-04 22:31:40
什麼是錯誤?請在 – 2013-05-04 22:36:27
SELECT部分中'month'不明確,'quote.qid'未知(需要放在子查詢中),'pr.phone_reqs = vehicle.vid'應該是'pr.vehicle_id = vehicle.vid'。在修復之後,分組關閉。需要按月份和公司分組,但實際上僅按月份分組。 – mpen 2013-05-04 22:38:18