• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
199 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ź 791 wizyt
pytanie zadane 20 października 2016 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
+2 głosów
1 odpowiedź 181 wizyt
pytanie zadane 23 czerwca 2021 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
0 głosów
0 odpowiedzi 1,456 wizyt
pytanie zadane 30 sierpnia 2017 w JavaScript przez naaatasha Nowicjusz (120 p.)

93,174 zapytań

142,185 odpowiedzi

321,968 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...