[英]CakePHP find most recent date
編輯:我想通了。 檢查底部的解決方案。
我正在嘗試查詢MOST RECENT activity.date不在過去30天到未來30天之間的所有行。 換句話說,如果他們上個月有活動,請不要選擇他們。 這是當前發送到find()的數組:
'Declined' => array(
'conditions' => array(
'Program.deal_status' => 'declined',
"Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
'Activity.date NOT BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) and DATE_ADD(CURDATE(), INTERVAL 30 DAY)',
),
'joins' => array(
array(
'table' => 'programs',
'alias' => 'Program',
'type' => 'LEFT',
'conditions' => array(
'Program.customer_id = Customer.customer_id'
)
),
array(
'table' => 'activities',
'alias' => 'Activity',
'type' => 'LEFT',
'conditions' => array(
'Activity.customer_id = Customer.customer_id',
)
),
),
'order' => array(
'Program.date_submitted DESC',
),
'group' => array(
'Customer.customer_id',
),
'fields' => array(
'Customer.customer_id',
"CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
'CustomerContactInformation.email',
'Program.date_submitted',
'Program.underwriters_notes',
'Activity.date',
)
)
我試過做MAX(Activity.date),但根本沒有運氣。 我有點認為這與聯接有關。 由於一個單一的customer_id可能有許多活動,所以我認為它只是加入它可以找到的第一個活動行。 我不確定如何制作它,以便選擇最近的activity.date。
蛋糕版本是2.4.5。
謝謝,非常感謝您的幫助。
解:
'Declined' => array(
'conditions' => array(
'Program.deal_status' => 'declined',
"Customer.sales_associate {CONDITION}",
"Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
'Customer.store {STORE_CONDITION}',
),
'joins' => array(
array(
'table' => 'programs',
'alias' => 'Program',
'type' => 'LEFT',
'conditions' => array(
'Program.customer_id = Customer.customer_id'
)
),
array(
'table' => 'activities',
'alias' => 'Activity',
'type' => 'LEFT',
'conditions' => array(
'Activity.customer_id = Customer.customer_id',
)
),
),
'order' => array(
'Program.date_submitted DESC',
"MAX(Activity.date) ASC"
),
'group' => array(
'Activity.customer_id HAVING most_recent NOT BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) and DATE_ADD(NOW(), INTERVAL 30 DAY)'
),
'fields' => array(
'customer_id' => 'Customer.customer_id',
'Customer' => "CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
'Email' => 'CustomerContactInformation.email',
'Program Date' => 'Program.date_submitted',
'Underwriter notes' => 'Program.underwriters_notes',
'Last Activity Date' => 'Activity.date',
'hidden' => 'MAX(Activity.date) AS most_recent'
)
),
解:
'Declined' => array(
'conditions' => array(
'Program.deal_status' => 'declined',
"Customer.sales_associate {CONDITION}",
"Program.date_submitted > DATE_SUB(CURDATE(), INTERVAL 60 DAY)",
'Customer.store {STORE_CONDITION}',
),
'joins' => array(
array(
'table' => 'programs',
'alias' => 'Program',
'type' => 'LEFT',
'conditions' => array(
'Program.customer_id = Customer.customer_id'
)
),
array(
'table' => 'activities',
'alias' => 'Activity',
'type' => 'LEFT',
'conditions' => array(
'Activity.customer_id = Customer.customer_id',
)
),
),
'order' => array(
'Program.date_submitted DESC',
"MAX(Activity.date) ASC"
),
// HAVE TO GROUP BY THE DATE
'group' => array(
'Activity.customer_id HAVING most_recent NOT BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) and DATE_ADD(NOW(), INTERVAL 30 DAY)'
),
'fields' => array(
'customer_id' => 'Customer.customer_id',
'Customer' => "CONCAT_WS(' ', CustomerPersonalInformation.first_name, CustomerPersonalInformation.last_name) AS full_name",
'Email' => 'CustomerContactInformation.email',
'Program Date' => 'Program.date_submitted',
'Underwriter notes' => 'Program.underwriters_notes',
'Last Activity Date' => 'Activity.date',
'hidden' => 'MAX(Activity.date) AS most_recent'
)
),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.