我正在为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)
以下是我的数据库表中的记录。
供者:
DonorsRecord:
现在,但是当我执行查询时,我只获得捐赠日期的记录" 2016-04-12"而不是另一个。所以任何人都可以帮助我最后一次这个。如果它来自Eloquent或DB方面并不重要,两者都可以正常工作。
更新
与此类似,我有另一个查询。我有桌子
products [id, name, price]
customer [id, name]
purchase [customer_id, product_id, timestamp]
如何获得每位客户的最新产品?
答案 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;