получать все записи с самой последней датой [ОШИБКА] - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть эта таблица, в которую я хочу вернуть имя и отчество всех записей с самыми последними данными, должна быть динамической всякий раз, когда вставляется новая последняя дата, чтобы вернуть эту запись. Я пробовал это

SELECT rh.firstname, rh.fathername, rh.bloodonation_date
FROM personprofile rh,
  (SELECT MAX(bloodonationdate) AS maxdate, firstname
   FROM report_history
   GROUP BY firstname) maxresults
WHERE rh.firstname= maxresults.firstname
AND rh.bloodonation_date= maxresults.bloodonation_date;  

Так что, если у меня есть эта таблица

firstname, fathername,bloodonation_date
--------------------------
Ahmed     issa   2018-12-24
Noora     issa   2018-12-21
Joseph    John   2018-12-24
Ash       Scott  2018-12-24
Isacf     jaack  2018-12-24
Ashley    Make   2018-12-24
James     Ma     2018-12-20
cd        cd     2018-12-24
cde       cde    2018-12-24
Marc      Mac    2018-12-16
Noora     Ahmed  2018-12-15
Rabeew    fbdb   2018-11-15

Как мне заставить его вернуться

firstname, fathername,bloodonation_date
--------------------------
Ahmed     issa   2018-12-24
Joseph    John   2018-12-24
Ash       Scott  2018-12-24
Isacf     jaack  2018-12-24
Ashley    Make   2018-12-24
cd        cd     2018-12-24

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Вы можете использовать подзапрос здесь:

выберите * из профиля пользователя, где bloodonation_date = (выберите max (bloodonation_date) из профиля пользователя) заказать по 1 Проверьте решение здесь

0 голосов
/ 03 ноября 2018

Вы можете попробовать использовать коррелированный подзапрос.

Схема (MySQL v5.7)

CREATE TABLE T(
   firstname VARCHAR(50),
    fathername VARCHAR(50),
bloodonation_date DATE
);



INSERT INTO T VALUES ('Ahmed','issa','2018-12-24');
INSERT INTO T VALUES ('Noora','issa','2018-12-21');
INSERT INTO T VALUES ('Joseph','John','2018-12-24');
INSERT INTO T VALUES ('Ash','Scott','2018-12-24');
INSERT INTO T VALUES ('Isacf','jaack','2018-12-24');
INSERT INTO T VALUES ('Ashley','Make','2018-12-24');
INSERT INTO T VALUES ('James','Ma','2018-12-20');
INSERT INTO T VALUES ('cd','cd','2018-12-24');
INSERT INTO T VALUES ('cde','cde','2018-12-24');
INSERT INTO T VALUES ('Marc','Mac','2018-12-16');
INSERT INTO T VALUES ('Noora','Ahmed','2018-12-15');
INSERT INTO T VALUES ('Rabeew','fbdb','2018-11-15');

Запрос № 1

SELECT *
FROM T 
WHERE bloodonation_date = (
  SELECT  MAX(bloodonation_date) 
  FROM T                       
);

| firstname | fathername | bloodonation_date |
| --------- | ---------- | ----------------- |
| Ahmed     | issa       | 2018-12-24        |
| Joseph    | John       | 2018-12-24        |
| Ash       | Scott      | 2018-12-24        |
| Isacf     | jaack      | 2018-12-24        |
| Ashley    | Make       | 2018-12-24        |
| cd        | cd         | 2018-12-24        |
| cde       | cde        | 2018-12-24        |

Просмотр на БД Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...