Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Wyszukiwanie duplikatów
AddoN
post 1.05.2013, 10:08:07
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 9.07.2010

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


Witam, jest jakiś prosty sposób na wychwycenie duplikowanych wierszy tabeli za pomocą PHPMyAdmina?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
timon27
post 1.05.2013, 10:55:31
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


przy założeniu że masz podobnie skonfigurowanego:
- wchodzisz na tabelę
- dajesz 'struktura'
- zaznaczasz wszystkie wiersze (kolumny)
- dajesz 'Jednoznaczny'
- jeśli są zduplikowane wiersze to mysql zwróci błąd - #1062 - Duplicate entry 'pierwszakolumna-drugakolumna' for key 1
- w przeciwnym wypadku doda indeks jednoznaczny na wszystkich kolumnach i już nigdy wiersze ci się nie zduplikują smile.gif

Ten post edytował timon27 1.05.2013, 11:02:40
Go to the top of the page
+Quote Post
AddoN
post 1.05.2013, 11:03:05
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 9.07.2010

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


Cytat(timon27 @ 1.05.2013, 11:55:31 ) *
Wyszukiwanie towarów o takich samych eanach, wyświetla wszystkie pozycje:

  1. SELECT indeks,nazwa,a.ean,stan FROM
  2. (SELECT ean,COUNT(*) AS c
  3. FROM towary WHERE ean>9
  4. GROUP BY ean
  5. HAVING c>1) AS a
  6. LEFT JOIN
  7. (SELECT indeks,nazwa,ean,stan
  8. FROM towary) AS b
  9. ON a.ean=b.ean


  1. SELECT Nazwisko,a.ean FROM
  2. (SELECT ean,COUNT(*) AS c
  3. FROM serwis__smod_users WHERE ean>9
  4. GROUP BY ean
  5. HAVING c>1) AS a
  6. LEFT JOIN
  7. (SELECT Nazwisko,ean
  8. FROM serwis__smod_users) AS b
  9. ON a.ean=b.ean


Spróbowałem zrobić to tym zapytaniem, ale wywaliło jakieś błędy.
Mam jedną tabelę z kolumną Nazwisko i kolumną Imię. Chciałem wyświetlić duplikaty dla wierszy gdzie Nazwisko jest takie samo.

Cytat(timon27 @ 1.05.2013, 11:55:31 ) *
przy założeniu że masz podobnie skonfigurowanego:
- wchodzisz na tabelę
- dajesz 'struktura'
- zaznaczasz wszystkie wiersze (kolumny)
- dajesz 'Jednoznaczny'
- jeśli są zduplikowane wiersze to mysql zwróci błąd - #1062 - Duplicate entry 'pierwszakolumna-drugakolumna' for key 1
- w przeciwnym wypadku doda indeks jednoznaczny na wszystkich kolumnach i już nigdy wiersze ci się nie zduplikują smile.gif


No tutaj problem że tych wierszy jest blisko 1000 i mają prawo się duplikować. Chciałem wychwycić same duplikaty żeby je zweryfikować (niekoniecznie usuwać).

___


Coś takiego chyba nie będzie działać?

  1. SELECT * FROM `serwis__smod_users` WHERE Nazwisko=Nazwisko


Użyłem jeszcze tego

  1. SELECT Nazwisko, Count(Nazwisko) FROM serwis__smod_users GROUP BY Nazwisko ORDER BY Count(Nazwisko) DESC


Jeżeli rozumiem, to dostałem tabelę z nazwiskami i ich ilościami w bazie.

Ale chciałbym żeby przy tym były jeszcze te standardowe opcje - edytuj, uuń itp

Ten post edytował AddoN 1.05.2013, 11:18:26
Go to the top of the page
+Quote Post
timon27
post 1.05.2013, 11:18:10
Post #4





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Sory za całkowitą zmianę mojego posta, dopiero po paru minutach zorientowałem się że można to przecież zrobić o wiele prościej.
Niestety widzę że nie odświeżyłeś strony po mojej edycji.
Spróbuj sposobu z indeksem unikatowym.

Ten post edytował timon27 1.05.2013, 11:18:26
Go to the top of the page
+Quote Post
AddoN
post 1.05.2013, 11:28:18
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 9.07.2010

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


Cytat(timon27 @ 1.05.2013, 12:18:10 ) *
Sory za całkowitą zmianę mojego posta, dopiero po paru minutach zorientowałem się że można to przecież zrobić o wiele prościej.
Niestety widzę że nie odświeżyłeś strony po mojej edycji.
Spróbuj sposobu z indeksem unikatowym.


Znalazło jeden duplikat, a ich jest znacznie więcej ;]
Póki co bawię się coutem
Go to the top of the page
+Quote Post
masahuku
post 5.05.2013, 10:19:24
Post #6





Grupa: Zarejestrowani
Postów: 42
Pomógł: 4
Dołączył: 11.12.2009

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


Jest jeszcze taki bajer jak DISTINCT możesz dać DELETE FROM tabela WHERE id NOT IN (drugi select) gdzie drugi select pobiera wyłączeni nie-duplikaty.
Go to the top of the page
+Quote Post
Majcon
post 6.05.2013, 21:18:28
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 27.11.2012
Skąd: Sieradz

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


  1. SELECT Nazwisko, COUNT(*) AS test FROM serwis__smod_users GROUP BY Nazwisko ORDER BY test DESC


Ten post edytował Majcon 6.05.2013, 21:19:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 22:57