Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Pobieranie tablicy z powtarzającymi się rekordami
bahh
post
Post #1





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

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


Dzień dobry,

mam tablicę pobieraną za pomocą select do skryptu - tablica z kolumnami ip oraz czas.

Chcę by przy tablicy
-------------
| ip | czas |
-------------
| 1 | 212 |
| 1 | 213 |
| 1 | 214 |
| 2 | 211 |
| 2 | 212 |

Wyświetliło mi tylko ostatnie wystąpienie danego ip czyli wyświetliło mi tablicę
-------------
| ip | czas |
-------------
| 1 | 214 |
| 2 | 212 |

Jak sobie z tym poradzić? Pozdrawiam
Go to the top of the page
+Quote Post
freemp3
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Należy użyć DISTINCT oraz zapewne ORDER BY.
Go to the top of the page
+Quote Post
bahh
post
Post #3





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

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


więc daje takie zapytanie
SELECT DISTINCT `ip` FROM `xxx` WHERE YEAR(czas)='.date("Y").' AND MONTH(czas)='.date("m").' AND DAY(czas)='.date("d").' ORDER by `czas` DESC

ale chciałbym jeszcze pobrać czas poza distinct ip, jak powinno wyglądać zapytanie?


wstawiłem zamiast distinct group by, jednakże nie sortuje mi tablicy według order by
Go to the top of the page
+Quote Post
freemp3
post
Post #4





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


W przypadku użycia DISTINCT możesz podać więcej niż jedną kolumnę tak jak podczas zwykłego SELECT:
Kod
SELECT DISTINCT `ip`, `czas` ...
Go to the top of the page
+Quote Post
bahh
post
Post #5





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

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


wtedy wyświetla mi wszystkie rekordy, bez żadnego grupowania
Go to the top of the page
+Quote Post
memory
post
Post #6





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


  1. SELECT *,(SELECT czas from xxx as w WHERE w.ip = t.ip ORDER by czas DESC LIMIT 1) as ostaniczas FROM `xxx`as t WHERE YEAR(czas)='.date("Y").' AND MONTH(czas)='.date("m").' AND DAY(czas)='.date("d").' GROUP BY ip ORDER by `czas` DESC


lekka modyfkiacja

Ten post edytował memory 19.08.2013, 10:34:44
Go to the top of the page
+Quote Post
bahh
post
Post #7





Grupa: Zarejestrowani
Postów: 261
Pomógł: 2
Dołączył: 13.05.2012

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


nadal wyświetla źle, ciągle sortuje według ip
Go to the top of the page
+Quote Post
memory
post
Post #8





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


Pokaż wyniki i oczekiwane jakie mają być

Ten post edytował memory 19.08.2013, 12:37:03
Go to the top of the page
+Quote Post
freemp3
post
Post #9





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Dobrze by było gdybyś pokazał również całą strukturę tabeli
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #10





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

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


SELECT ip, Max(czas) AS czas FROM tabela GROUP BY 1

Ten post edytował mmmmmmm 19.08.2013, 13:15:48
Go to the top of the page
+Quote Post

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: 19.09.2025 - 13:18