Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Pobranie wyników bez powtórzeń z datą
Ryder
post 19.05.2014, 19:40:08
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


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)



Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
mar1aczi
post 19.05.2014, 21:00:32
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


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


Ten post edytował mar1aczi 19.05.2014, 21:03:26


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
mmmmmmm
post 19.05.2014, 22:08:09
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT email, Max(logindate) logindate FROM logowania GROUP BY 1 ORDER BY 2 DESC LIMIT 0,3
Go to the top of the page
+Quote Post
johny_s
post 19.05.2014, 22:09:39
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


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

Ten post edytował johny_s 19.05.2014, 22:10:11
Go to the top of the page
+Quote Post
kartin
post 19.05.2014, 23:11:19
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


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


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
johny_s
post 20.05.2014, 00:06:46
Post #6





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

Ostrzeżenie: (0%)
-----


fakt, dzieki
Go to the top of the page
+Quote Post
Ryder
post 20.05.2014, 18:52:29
Post #7





Grupa: Zarejestrowani
Postów: 74
Pomógł: 1
Dołączył: 5.01.2008

Ostrzeżenie: (0%)
-----


Dzięki MAX i GROUP BY razem działają.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:22