• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

porządkowanie wg daty rekordów z DISTINCT

Object Storage Arubacloud
0 głosów
144 wizyt
pytanie zadane 26 marca 2019 w PHP przez eyeys Początkujący (260 p.)

Hej. Jak mogę sformułować to 

$sql = "SELECT DISTINCT odbiorca, nadawca FROM wiadomosci WHERE nadawca='$Session' OR odbiorca='$Session' ORDER BY date_time DESC";

aby wynikiem było posortowanie wg czasu wszystkich odbiorców/nadawców..., a nie wyświetlenie wg daty/czasu jedynie ostatniego z powtarzających się imion i posegregowanie ich wtedy wg alfabetu? Jak to zrobić, aby wszystkie wyniki $sql uformowały się wg daty?

Pomocy:) Przy moich kombinatorstwach trafiam na błędy.

komentarz 26 marca 2019 przez Chess Szeryf (76,710 p.)
Jeśli możesz, to podaj przykład z jakich danych jakie dane mają powstać.
komentarz 26 marca 2019 przez eyeys Początkujący (260 p.)
Jest kolumna w której wypisane są imiona: Ania, Beata, Dorota, Ania, Kasia, Kasia, Jacek Kasia itp.

Dzięki $sql wychodzi mi ostatnia z Ań, czyli druga Ania, jedna Beata bo tylko jedna Beata jest, jedna Dorota, trzecia z Kaś, Jacek. (itp, jeśli imię kilka razy się powtarza to dzięki DISTINCT wyświetla się ostatnie, wg daty.

 

A ja chcę, aby te wszystkie pojedyncze imiona dodatkowo też były uporządkowane wg daty, bo na razie wygląda na to, że porządkowanie wg daty działa tylko w obrębie grup tych powtarzających się imion, gdy ma wyrzucać ostatnie z powtarzających się.
komentarz 27 marca 2019 przez Chess Szeryf (76,710 p.)

Przepraszam, ale nadal nie mogą zrozumieć w czym rzecz. Z jakiej bazy danych korzystasz, MySQL?

+----+---------------------+--------------+
| id | dt                  | description1 |
+----+---------------------+--------------+
|  5 | 2011-04-01 16:43:50 | hello        |
|  4 | 2017-06-01 15:23:20 | hello world  |
|  1 | 2018-02-02 20:20:20 | hello world  |
|  2 | 2018-03-02 21:20:20 | hello world  |
|  3 | 2019-03-02 14:00:20 | hello world  |
|  6 | 2020-01-01 11:23:10 | hello        |
|  7 | 2020-04-04 12:33:19 | world        |
+----+---------------------+--------------+
select distinct * from date_time1 order by dt desc;
+----+---------------------+--------------+
| id | dt                  | description1 |
+----+---------------------+--------------+
|  7 | 2020-04-04 12:33:19 | world        |
|  6 | 2020-01-01 11:23:10 | hello        |
|  3 | 2019-03-02 14:00:20 | hello world  |
|  2 | 2018-03-02 21:20:20 | hello world  |
|  1 | 2018-02-02 20:20:20 | hello world  |
|  4 | 2017-06-01 15:23:20 | hello world  |
|  5 | 2011-04-01 16:43:50 | hello        |
+----+---------------------+--------------+

U mnie po distinct nic się nie dzieje. Jeśli możesz, na tych danych przedstaw o co chodzi.

komentarz 27 marca 2019 przez eyeys Początkujący (260 p.)
tak, z mysql. Ja laik, może nie umiem tłumaczyć:D

1. Jeśli zrobię select DISTINCT description1 to wyrzuci w kolejności alfabetycznej hello, hello world, world. Pojedyńczo, mimo że np. jest 4 x hello world, to w echo wyrzuci tylko ten ostatni z hello worldów(w przypadku order dt DESC).

(Mi tak to działa z moim phpmyadminem i xampem, bez DISTINCT wyrzuca wszystkie opisy, czyli world, hello, hello world x4, hello.)

2. A zależy mi, aby te pojedyńcze wyniki które wyjdą z tym DISTINCT również były uporządkowane wg dt DESC, a nie alfabetu.

1 odpowiedź

0 głosów
odpowiedź 27 marca 2019 przez Chess Szeryf (76,710 p.)
wybrane 28 marca 2019 przez eyeys
 
Najlepsza
select * from date_time1;
+----+---------------------+--------------+
| id | dt                  | description1 |
+----+---------------------+--------------+
|  3 | 2019-03-02 14:00:20 | hello world  |
|  5 | 2011-04-01 16:43:50 | hello        |
|  6 | 2020-01-01 11:23:10 | hello        |
|  7 | 2020-04-04 12:33:19 | world        |
|  8 | 2015-03-04 12:43:19 | aworld       |
|  9 | 2015-12-02 11:23:29 | aworld       |
| 10 | 2017-06-01 15:23:20 | hello world  |
+----+---------------------+--------------+

Przetestuj te zapytanie:

SELECT `id`, MAX(`dt`) as `x`, `description1` FROM `date_time1` GROUP BY `description1` ORDER BY `x` DESC;
+----+---------------------+--------------+
| id | x                   | description1 |
+----+---------------------+--------------+
|  7 | 2020-04-04 12:33:19 | world        |
|  5 | 2020-01-01 11:23:10 | hello        |
|  3 | 2019-03-02 14:00:20 | hello world  |
|  8 | 2015-12-02 11:23:29 | aworld       |
+----+---------------------+--------------+

Jeśli chcesz wartość minimalną lub maksymalną to po SELECT napisz MIN(`dt`) lub MAX(`dt`) i później do tego sortowanie na końcu ASC lub DESC.

Podobne pytania

0 głosów
1 odpowiedź 680 wizyt
pytanie zadane 20 października 2016 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
+2 głosów
1 odpowiedź 140 wizyt
pytanie zadane 23 czerwca 2021 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
0 głosów
0 odpowiedzi 1,226 wizyt
pytanie zadane 30 sierpnia 2017 w JavaScript przez naaatasha Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...