Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Problem z GROUP BY, Banalne, a coś nie wychodzi ;/
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam,
mam problem dosyć często spotykany, przeczytałem mnóstwo tematów z tym związanych a jednak dalej nie wiem co jest źle. Mianowice robie plik, który wypisuje listę userów z bazy, u których powtórzyło się IP. Robię to w ten sposób:

Kod
SELECT id, ip, user FROM users GROUP BY ip HAVING count(*) > 1 ORDER BY id;


Niestety takie coś zwraca mi jedynie listę potwórzonych ip, czyli np:

127.0.0.1
50.0.50.0

(takie wpisałem do bazy dla testów). A chciałbym żeby zamiast tego tak to wyglądało:

user1 (127.0.0.1)
user2 (127.0.0.1)
user5 (50.0.50.0)
user24 (50.0.50.0)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


  1. SELECT COUNT( * ) AS `Rekordów` , `id`, `ip`, `user`
  2. FROM `users` GROUP BY `ip`
  3. ORDER BY `id`ASC


Ten post edytował Darti 22.11.2008, 16:40:11
Go to the top of the page
+Quote Post
Skie
post
Post #3





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Tak, ale ten sposób zrobi dokładnie to co poprzedni. Wyświetli jedynie pierwszy rekord dla każdego powtarzającego się IP.

Kod
SELECT user, id, COUNT(*) AS ip FROM users GROUP BY ip HAVING ip > 1 ORDER BY id;


Może dla wyjaśnienia podam wygląd tabali users i co chce uzyskać:

id | user | ip
1 | user1 | 127.0.0.1
2 | user2 | 0.0.0.0
3 | user3 | 50.0.50.0
4 | user4 | 127.0.0.1
5 | user5 | 50.0.50.0

Chce pobrać powtarzające się rekordy, czyli w tym przypadku rekordy o ID:
1, 3, 4, 5

Niestety oba przypadki (ten w tym poście i w moim poprzednim) zwracają jedynie po jednym rekordzie dla danego IP, czyli:
1, 3

Ten post edytował Skie 22.11.2008, 16:54:37
Go to the top of the page
+Quote Post
thm
post
Post #4





Grupa: Zarejestrowani
Postów: 52
Pomógł: 10
Dołączył: 6.10.2008
Skąd: Lublin

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


czary mary:
  1. SELECT u2.* FROM users AS u1 JOIN users AS u2 WHERE u1.id != u2.id AND u1.ip = u2.ip
Go to the top of the page
+Quote Post
nevt
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


  1. SELECT * FROM `users` LEFT JOIN (SELECT `ip`, count(`ip`) AS `ile` FROM `users` GROUP BY `ip`) AS `tmp` USING(`ip`) WHERE `ile` > 1;
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: 24.08.2025 - 00:20