Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Grupowanie po posortowaniu malejąco
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Tak z czystej ciekawości. Czy ktoś jest w stanie odpowiedzieć dlaczego poniższe ogólnie działa, ale nie działa na komputerze kolegi? (IMG:style_emoticons/default/smile.gif) Jest to Mac z zainstalowanym XAMPPem. Poniżej wklejam całość testu:
  1. CREATE TABLE `tabela` (
  2. `id` INT NOT NULL,
  3. `point_id` INT NOT NULL,
  4. `date` DATE NOT NULL,
  5. `value` INT NOT NULL,
  6. PRIMARY KEY (`id`));
  7.  
  8. INSERT INTO tabela (id, point_id, date, value) VALUES
  9. (1, 1, '2017-01-01', 1),
  10. (2, 1, '2017-01-02', 2),
  11. (3, 1, '2017-01-03', 3),
  12.  
  13. (4, 2, '2017-01-03', 1),
  14. (5, 2, '2017-01-02', 2),
  15. (6, 2, '2017-01-01', 3)
  16. ;
  17.  
  18. SELECT * FROM (
  19. SELECT
  20. *
  21. FROM
  22. tabela
  23. ORDER BY
  24. id DESC
  25. ) AS t GROUP BY point_id;

Wszędzie poza komputerem kolegi (IMG:style_emoticons/default/smile.gif) zapytanie zwraca rekordy o ID 3 i 6, natomiast u niego: 1 i 4 tak jakby sortowanie w podzapytaniu nie było uwzględnione. Czy ktoś wie gdzie leży przyczyna? Jakieś ustawienia konfiguracyjne?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Dlaczego jest różnica nie wiem, może wynika z różnych wersji MySQL.
Ale przede wszystkim:
Cytat
If ONLY_FULL_GROUP_BY is disabled, a MySQL extension to the standard SQL use of GROUP BY permits the select list, HAVING condition, or ORDER BY list to refer to nonaggregated columns even if the columns are not functionally dependent on GROUP BY columns. This causes MySQL to accept the preceding query. In this case, the server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate, which is probably not what you want.

Z czego wynika, że wybrane wartości z niegrupowanych kolumn są "losowe".
Nie możesz opierać rezultatu obecnego zapytania na podstawie tego, że u większości zwraca poprawny wynik. Nawet jakby u wszystkich zwracało taki sam.
Jeśli chcesz otrzymywać taki rezultat, musisz przebudować zapytanie.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.01.2026 - 23:21