获取每个捐赠者的最后记录

时间:2016-08-27 21:35:48

标签: mysql sql database eloquent laravel-5.2

我正在为Laravel的网站开发BDS功能。现在我已经尝试过两次问这个问题了,但是我不能正确地问这个问题,所以我会尝试最后一次尝试。

我有2张桌子Donor和DonorRecords。我想要的是仅获得所有捐赠者及其最新捐赠日期,并且仅在他们在过去3个月内没有捐献血液时。我已经通过两种方式尝试过了。雄辩和质疑。

以下是我使用的查询:

SELECT  donors.name, donors.mobile, donors.address, donors.blood_group, donors.area, MAX(donor_records.donation_date) AS d_date FROM donor_records JOIN donors ON donors.id = donor_records.id WHERE NOW() > DATE_ADD(donor_records.donation_date, INTERVAL 90 DAY)

以下是我的数据库表中的记录。

供者:

enter image description here

DonorsRecord:

enter image description here

现在,但是当我执行查询时,我只获得捐赠日期的记录" 2016-04-12"而不是另一个。所以任何人都可以帮助我最后一次这个。如果它来自Eloquent或DB方面并不重要,两者都可以正常工作。

更新

与此类似,我有另一个查询。我有桌子

products [id, name, price]
customer [id, name]
purchase [customer_id, product_id, timestamp]

如何获得每位客户的最新产品?

2 个答案:

答案 0 :(得分:0)

使用SELECT DISTINCT

SELECT DISTINCT donors.Name FROM donors JOIN donorsRecord ON donors.id = donorsRecord.id
WHERE NOW() > DATE_ADD (donorRecord.donationDate, INTERVAL 3 MONTH)

答案 1 :(得分:0)

SELECT donors.Name FROM donors JOIN donorsRecord ON donors.id = donorsRecord.id
WHERE NOW() > DATE_ADD(donorRecord.donationDate, INTERVAL 3 MONTH)
group by donors.id;