Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Pobranie wyników bez powtórzeń z datą
Forum PHP.pl > Forum > Bazy danych > MySQL
Ryder
Witam,

Chce pobrac z bazy ostatnie logowania bez powtórzeń z datą i czasem logowania
Struktura tabeli logowania: id, email, logindate.

Przykładowe dane:
1 mail1@gmail.com 2014-05-12 18:00:00
2 mail1@gmail.com 2014-05-12 11:00:00
3 mail2@gmail.com 2014-05-11 12:00:00
4 mail3@gmail.com 2014-05-05 06:00:00
5 mail1@gmail.com 2014-05-04 21:00:00

Gdy wywołuje poniższe zapytanie DISTINC nie działa tak jak bym tego chaciał i wyświetla powtórzenia

  1. SELECT DISTINCT email, logindate FROM logowania ORDER BY logindate DESC LIMIT 0,3


Wyswietla rekord 1,2,3
Chiałbym osiagnąć wynik: 1,3,4 bez 2 (to jest powtórzenie emaila z rekordu 1)



mar1aczi
Wymyśliłem tak:
  1. SELECT DISTINCT ll.login_name, (SELECT max(login_date) FROM logi l WHERE l.login_name = ll.login_name) AS login_date FROM `logi` ll
mmmmmmm
  1. SELECT email, Max(logindate) logindate FROM logowania GROUP BY 1 ORDER BY 2 DESC LIMIT 0,3
johny_s
O grupowaniu to już nikt nie słyszał?

  1. SELECT email, logindate FROM logowania GROUP BY email ORDER BY logindate DESC


oki mmmmmmm słyszał smile.gif
kartin
Cytat(johny_s @ 19.05.2014, 23:09:39 ) *
O grupowaniu to już nikt nie słyszał?

  1. SELECT email, logindate FROM logowania GROUP BY email ORDER BY logindate DESC


To zapytanie jest błędne! Wybierze z tabeli pierwsze wystąpienie każdego adresu email i datę znajdująca się w tym wierszu, następnie te wyniki posortuje wedle daty. Aby się o tym przekonać wystarczy np. w drugim wierszu zmienić datę na 13 maja.

mmmmmmm podał dobre zapytanie:
  1. SELECT email, MAX(logindate) AS logindate
  2. FROM logowania
  3. GROUP BY 1
  4. ORDER BY 2 DESC
johny_s
fakt, dzieki
Ryder
Dzięki MAX i GROUP BY razem działają.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.