![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 9 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Czy istenieje możliwość pogrupowania wyników z tabeli w taki sposób, że jeśli jest więcej takich samych to pokazuje drugi wynik a nie pierwszy czy ostatni? Tabela: Nazwa------------data--------------numer krzysztof------2012-12-11-----------7 Adam------------2012-12-10------------7 Adam------------2012-10-10------------7 Adam------------2012-5-10------------4 group by numer numer ASC Czy dam ASC czy DESC to i tak pokazuje wynik z brzegu albo pierwszy albo ostatni jak wyciągnąć wynik 2 od góry? Na początku robiłem dwa osobne zapytania które grupowały a potem szukały drugiego wyniku przez LIMIT 1,1 lecz to nie sprawdza się bo potrzebuję wyświetlić kilka wyników w pętli a to moje pierwsze działało przy jednym wyniku. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie masz do dupy.
NIE WOLNO dawać * w połączeniu z GROUP BY. Zwłaszcza, że nie grupujesz po polu unikalnym |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 9 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie masz do dupy. NIE WOLNO dawać * w połączeniu z GROUP BY. Zwłaszcza, że nie grupujesz po polu unikalnym To nawet jak nie dam tego * to jak zrobić aby rozwiązać mój problem? Grupowanie działa i wyświetla prawidłowo tylko chce wyciągnąć jak pisałem wyżej 2 wynik z grupy. Jak mam 30 takich samych wyników to grupuje do jednego i wyświetla pierwszy lub ostatni wiersz z grupy. Rozwiązałem ten problem i działa jak chce tylko jako w 2 zapytaniach i z wykorzystaniem pętli. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jak mam 30 takich samych wyników to grupuje do jednego i wyświetla pierwszy lub ostatni wiersz z grupy. Przypadek... Cytat za manualem: Cytat 12.11.3. GROUP BY and HAVING with Hidden Fields MySQL extends the use of GROUP BY so that you can use non-aggregated columns or calculations in the SELECT list that do not appear in the GROUP BY clause. You can use this feature to get better performance by avoiding unnecessary column sorting and grouping. For example, you do not need to group on customer.name in the following query: SELECT order.custid, customer.name, MAX(payments) FROM order,customer WHERE order.custid = customer.custid GROUP BY order.custid; In standard SQL, you would have to add customer.name to the GROUP BY clause. In MySQL, the name is redundant. Do not use this feature if the columns you omit from the GROUP BY part are not constant in the group. The server is free to return any value from the group, so the results are indeterminate unless all values are the same. A similar MySQL extension applies to the HAVING clause. The SQL standard does not allow the HAVING clause to name any column that is not found in the GROUP BY clause if it is not enclosed in an aggregate function. MySQL allows the use of such columns to simplify calculations. This extension assumes that the non-grouped columns will have the same group-wise values. Otherwise, the result is indeterminate. Popraw zapytanie, aby było prawidłowe, to ci potem pomogę. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 9 Dołączył: 3.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przypadek... Cytat za manualem: Popraw zapytanie, aby było prawidłowe, to ci potem pomogę. OK, posiedzę nad tym (IMG:style_emoticons/default/smile.gif) Pierwsze proste zapytanie które grupuje pole numer
Zapytanie z manuala:
Działa, tylko, że jak to ma się do tego fragmentu "SELECT order.custid, customer.name" to są dwie osobne tabele? jak to interpretować? I co dalej z tym zrobić, rozumiem, że te MAX po coś tu jest i trzeba go gdzieś wykorzystać dalej. Będę potrzebował jeszcze HAVING? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 03:56 |