Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Szukanie dubli w jednej kolumnie, i różnic w drugiej
Forum PHP.pl > Forum > Przedszkole
nyfko
Cześć wszystkim. Mam taki problem, że chcę u siebie na forum napisać prostą funkcję do wyłapania dubli kont na podstawie IP. Dlatego dodałem nową tabelę, która ma zapisywać wszystkie logowania (by nie brało pod uwagę tylko ostatniego ip). Są to kolumny id, user_id, ip, date. I wszystko super, tylko co dalej.

W necie znalazłem sporo informacji, jak znaleźć powtarzające się rekordy na podstawie kolumny, np. za pomocą grupowania. Problem w tym, że to musi jednocześnie ignorować powtórzenia o tym samym ID użytkownika, tak by wyłapało to samo IP ale dla różnych kont.

Przykład logu z logowań użytkowników: (id usera - ip)
25 192.168.1.13
25 192.168.1.13
59 192.168.20.18
44 192.168.1.13
25 192.168.1.13
128 127.0.0.1
255 192.168.0.22
99 127.0.0.1

W tym przypadku mamy 4 powtórzenia IP "192.168.1.13" oraz 2 powtórzenia IP 127.0.0.1 ale zamiast zwracać tych 6 rekordów, to powinno zwrócić dwie grupy - dwóch użytkowników 25 i 44 oraz 128 i 99 bo występują u nich te same kolumny IP.

Jak tego najszybciej i najprościej dokonać, by ograniczyć się w ilości zapytań? Da się te wszystkie duble zwrócić za pomocą jednego zapytania, tak bym nie musiał najpierw pobierać tabeli a potem sprawdzać każdego rekordu po kolei za pomocą PHP?
nospor
No to zamiast grupowac po jednym polu, grupuj po dwoch
... group by pole1, pole2
mmmmmmm
  1. SELECT ip, group_concat(DISTINCT user_id separator ',') FROM tabela GROUP BY 1

słowo klucz - DISTINCT
nyfko
Wielkie dzięki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.