2010-12-03 62 views
0

我正在使用PHP和MySQL。我有兩張桌子,一張是給顧客的,一張是供銷售的。我的目標是提出一份過去一年有5個以上常規銷售記錄的客戶名單,但在過去三個月內(基本上是最近停止購買的固定客戶)的銷售記錄爲零。同時,我想抓住每個這些客戶的最新銷售記錄的日期,並且按照最近的銷售記錄日期按照降序排列客戶名單。這也應該限制結果給5個客戶。mysql/php不確定如何構建特定查詢

所以爲了簡單起見,讓我們說, '客戶' 表看起來像這樣

ID, CUSTOMER_NAME

和 'sale_entry' 表看起來像這樣

ID, CUSTOMER_ID, entry_date, sale_type(可以是0 =常規,1 =現貨,2 =合同)

sale_entry表中的customer_id字段o f課程涉及客戶表中的id字段。歡迎任何關於如何最好地檢索所需數據的想法。

回答

0

完成了幾個子查詢。

$query = 'SELECT DISTINCT' 
    .' customers.id' 
    .', customers.customer_name' 
    .', (SELECT MAX(x.entry_date) FROM sale_entry AS x WHERE x.customer_id = customers.id) AS last_purchase_date' 
    .' FROM customers' 
    .' WHERE (SELECT COUNT(x.id) FROM sale_entry AS x WHERE x.customer_id = customers.id AND x.type = 0 AND x.entry_date >= \''.date('Y-m-d', strtotime('-1 year')).'\') > 0' 
    .' AND (SELECT COUNT(x.id) FROM sale_entry AS x WHERE x.customer_id = customers.id AND x.entry_date >= \''.date('Y-m-d', strtotime('-3 months')).'\') = 0' 
    .' ORDER BY last_purchase_date DESC' 
    .' LIMIT 5'; 
+0

讓我知道你是否能想到更有效的方法。 – dqhendricks 2010-12-03 20:59:04