Witam!
Jak zrobić by skrypt pobierał tylko rekordy gdzie treść jest identyczna w kolumnie.
Chodzi mi o system szukających oszustów. Gdzie są 2 identyczne ip to dane tego użytkownika zostaną mi pokazane. Z góry dziękuje.
Witam!
Jak zrobić by skrypt pobierał tylko rekordy gdzie treść jest identyczna w kolumnie.
Chodzi mi o system szukających oszustów. Gdzie są 2 identyczne ip to dane tego użytkownika zostaną mi pokazane. Z góry dziękuje.
Z bazy danych?
Na przykład GROUP BY i wybieranie tych, gdzie ilość jest większa niż 1. Więcej w Google.
Prawdę powiedziawszy nie udało mi się napisać tego przy pomocy GROUP BY tak jak by chciał tego kutar , ale działającą wersję udało mi się uzyskać przy pomocy odpowiedniej perspektywy. Czyli całość wyglądała tak:
CREATE OR REPLACE VIEW ip AS SELECT t.ip, COUNT(*) AS count FROM tabela AS t GROUP BY ip;
a potem tylko w kodzie strony:
SELECT * FROM ip WHERE count>1 ORDER BY count DESC;
w ten sposób dostajesz IP które się powtarzają, a potem wybierasz już tylko odpowiednich użytkowników
Dzięki, nie sprawdzałem, ale mam nadzieje że działa.
A to wymaga modyfikacji w strukturze tabeli?
SELECT * FROM users WHERE count>1 AND ORDER BY login DESC;
To może jeszcze zależeć od bazy danych, działa na pewno na PostgreSQLu, na MySQLu 5.x też powinno działać, MySQL 4.x nie obsługuje widoków (perspektyw) więc nie zadziała w takiej formie.
EDIT:
SELECT * FROM users WHERE count>1 AND ORDER BY login DESC;
zasadniczo, czym jest u Ciebie users? W podanym przykadzie najpierw pokazałem jak utworzyć odpowiedni widok przechowujący informacje o tym ilu użytkowników przypada na jedno ip. Może powiedz coś więcej o strukturze bazy danych to będzie łatwiej.
Tutaj podałem przykład. Poprostu mam bazę z użytkownikami. Skrypt po rejestracji zapisuje ip w odpowiedniej kolumnie. Jeśli jest więcej tych samych ipów pojazuje dane użytkownika.
No i ja również podałem Ci przykład, tworzysz odpowiednią perspektywę, która wybiera poszczególne adresy ip i zlicza krotność ich występowania, i z tej perspektywy wybierasz te wyniki które występują przynajmniej dwukrotnie.
Można jaśniej?
W którym miejscu?
Co to jest perspektywa w php?
Nic, perspektywę tworzy się w bazie danych, to coś w rodzaju wirtualnej tabeli, skłądnie tworzącą odpowiednią perspekyuwę podałem wcześniej:
CREATE OR REPLACE VIEW ip AS SELECT t.ip, COUNT(*) AS count FROM tabela AS t GROUP BY ip;
ale przyznam, że trochę przekombinowałem, jest prostsza metoda… (chociaż teoretycznie może być wolniejsza zdaje się)
SELECT ip, COUNT(*) AS count FROM users GROUP BY ip HAVING COUNT(*) > 1 ORDER BY count DESC;
Czyli w tym
SELECT ip, COUNT(*) AS count FROM users GROUP BY ip HAVING COUNT(*) > 1 ORDER BY count DESC;
Nie muszę twórzyć tych wirtualnych tabel?
Sprawdź jak to działa, to zobaczysz… Nie nie musisz…
Chodziło mi o to co Ty zrobiłeś, tylko bez perspektywy, a z najzwyklejszym mysq_fetch_* i wykonaniu kolejnego zapytania jeśli pole z count() >1 .
No ale oczywiście Twoje rozwiązanie lepsze