2016-08-27 3 views
-1

Laravel의 웹 사이트에 대한 BDS 기능을 연구 중입니다. 지금 나는이 질문을 두 번 시도했지만, 어떻게 든 정확하게 물어볼 수 없으므로 마지막 시도를 해보겠습니다.각 기부자의 최근 기록 얻기

나는 두 개의 테이블 기증자와 기증자 레코드를 가지고 있습니다. 제가 원하고 싶은 것은 지난 3 개월 동안 혈액을 기증하지 않은 경우에만 모든 기증자와 최신 기부 날짜를 얻는 것입니다. 나는 두 가지 방법으로 그것을 시도했다. Eloquent and Query. 내 데이터베이스 테이블의 레코드들이다

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년 4월 12일" 다른 하나는 아닙니다. 그래서 누구든지이 1 번으로 저를 도울 수 있습니다. 그것이 Eloquent 또는 DB 측면에서 나온 것이라면 상관 없습니다. 둘 다 잘 작동합니다. 이 유사

업데이트

, 나는 다른 쿼리가 있습니다. 나는 테이블이 있습니다

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

모든 고객의 마지막 제품을 얻으려면 어떻게해야합니까?

+0

'donorsRecord' 또는'donorRecord'? –

+0

중 하나를 사용하여 쿼리를 실행할 때 변경합니다. –

+0

'where donorRecord.donationDate> NOW() - INTERVAL 3 MONTH' – Mike

답변

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; 
+0

다음 오류가 발생합니다. SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서를 확인하여 올바른 구문을 찾으십시오. ') ID로 그룹화 LIMIT 0, 25'(라인 2) –

+0

수정 됨. DATE_ADD와 ( –

+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) 
+0

일부 기부자가 같은 이름을 가진다면? –

+0

생년월일 또는 ID 번호와 같은 다른 필드를 쿼리에 추가하십시오. 그런 다음 이름과 다른 필드의 고유 한 조합이 표시됩니다. –

+0

SELECT DISTINCT 선택자 명. 이름 FROM 기증자 JOIN donor_records ON donors.id = donor_records.id WHERE NOW()> DATE_ADD (donor_records.donation_date, INTERVAL 3 개월); 위의 –