Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Duplikati u bazi -MySql

[es] :: MySQL :: Duplikati u bazi -MySql

[ Pregleda: 2027 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Kusur
Grafički dizajner
Beograd

Član broj: 2485
Poruke: 166
*.54.EUnet.yu



Profil

icon Duplikati u bazi -MySql06.03.2004. u 16:14

Pozdrav svima

Php, mysql

Da li neko zna kako da napravim sql upit koji će da mi prikaže duplikate-iste redove iz baze?

Primer:
Upit koji će prikazati samo email-ove i imena korisnika koji imaju isti email.


Rbr.___Email________Ime

1. proba@proba.com - Petar Petrovic
2. proba@proba.com - Jovan Jovanovic
3. proba@proba.com - Milan Mitrovic

itd.

Unapred hvala
Kusur
06.03.2004. u 16:14 

broker

Član broj: 2415
Poruke: 8521
212.62.59.*



Profil

icon Re: Duplikati u bazi -MySql06.03.2004. u 17:05
Grupises slogovre po polju koje proveravas i korsitis funkciju count() da ti prebroji broj slogova u listi. Sve grupe koje imaju vise od jednog sloga sadrze duplikate.
06.03.2004. u 17:05 

noviKorisnik

Član broj: 13216
Poruke: 4513
*.dialup.neobee.net.



Profil

icon Re: Duplikati u bazi -MySql06.03.2004. u 19:22
Code:
SELECT *
FROM korisnici
WHERE email IN
 (
  SELECT email
  FROM korisnici
  GROUP BY email
  HAVING COUNT(*) > 1
 )
ORDER BY email

Na žalost, ovo neće da radi u MySQL-u, još uvek ne. Najavljeno je za narednu verziju jezika...
U međuvremenu - mora da se radi u 2 koraka.

Prvi query vraća listu multipliciranih emailova, što kroz PHP treba da se unese kao lista vrednosti za drugi query...
06.03.2004. u 19:22 

_owl_
Centar - BG

Član broj: 318
Poruke: 989
*.vdial.verat.net

Sajt: home.drenik.net/~owl


Profil

icon Re: Duplikati u bazi -MySql06.03.2004. u 23:00
A sta ce ti spoljni upit, dovoljno je samo unutrasnji:
Code:

SELECT email, ime, COUNT(email) 
FROM tabela
GROUP BY email, ime
HAVING COUNT(email)>1


Owl
06.03.2004. u 23:00 

noviKorisnik

Član broj: 13216
Poruke: 4513
*.dialup.neobee.net.



Profil

icon Re: Duplikati u bazi -MySql06.03.2004. u 23:22
Čini mi se da ovo ne radi... odnosno radi samo za one koji imaju duplirano i ime i email. Traži se lista svih imena vezanih za duplikate emaila.
06.03.2004. u 23:22 

broker

Član broj: 2415
Poruke: 8521
212.62.59.*



Profil

icon Re: Duplikati u bazi -MySql07.03.2004. u 12:35
Cek cek.. ti ne razumes SQL upit koji ti je coek dao?

Imas detaljno objasnjenje na http://www.mysql.com/documenta...apter/index.html#Counting_rows
07.03.2004. u 12:35 

_owl_
Centar - BG

Član broj: 318
Poruke: 989
*.vdial.verat.net

Sajt: home.drenik.net/~owl


Profil

icon Re: Duplikati u bazi -MySql07.03.2004. u 14:54
Da, da sad sam pogledao sta je covek trazio
Owl
07.03.2004. u 14:54 

Kusur
Grafički dizajner
Beograd

Član broj: 2485
Poruke: 166
*.3.EUnet.yu



Profil

icon Re: Duplikati u bazi -MySql07.03.2004. u 15:54
Možda nisam dobro objasnio šta mi treba, ali ste mi ipak pomogli

Upotrebio sam kod od _owl_ -a:

Code:
SELECT mail, COUNT(mail)
FROM korisnici
GROUP BY mail
HAVING COUNT(mail)>1


Izbacio sam grupisanje po imenu zato što greši u brojanju

Baš sam to tražio - sad znam koji su mail-ovi duplikati i koliko ih ima.

Puno hvala!
Kusur
07.03.2004. u 15:54 

bluesman
Goran Pilipović
Beograd

Član broj: 4505
Poruke: 1885
*.5.eunet.yu

ICQ: 7987706
Sajt: www.revolution.co.yu


Profil

icon Re: Duplikati u bazi -MySql12.03.2004. u 13:58
Dobio si duplikate i znas da ima 5 ovih, 15 onih, 7 drugih... kako da obrises sve duplirane a da ostane po jedan. Znaci hocu umesto 5 sa istim e-mailom da obrisem 4 a da ostane samo 1. Naravno, da se ne radi rucno.

Ili konkretnije, imam bazu od oko 25000 korisnika gde su se neki prijavili i po 70 puta. proverio sam i imam oko 3 hiljade korisnika koji su se registrovali vise od jednom (po postanskoj adresi) sto daje negde oko 7 hiljada upisa. Opet postoji problem posto verovatno Karadjordjeva 12 postoji i u Beogradu i u Novom Sadu. ali to je sada manje vazno... mogu da ga grupisem i po imenu i prezimenu. Postoji jos jedna problem, sa iste adrese su se registrovali njih cetvoro (cela porodica) a ja hocu samo 1 po adresi.

Da li ima neko ideju kako da (naravno, ne rucno) obrisem 69 upisa tog sto se registrovao 70 puta a da ostane samo 1 (bilo koji).
Goran Pilipović fka bluesman
12.03.2004. u 13:58 

Jbyn4e
Admin/Developer, Yunix
Zrenjanin - Beograd

Član broj: 422
Poruke: 3134
*.sbb.co.yu

ICQ: 10450578
Sajt: bio sf.co.yu


Profil

icon Re: Duplikati u bazi -MySql12.03.2004. u 14:11
Hm, mozda je najlaksi (koji mi sad pada na pamet) nacin napraviti skript koji ce da puni drugu (novu) tabelu(e) sa podacima, s tim da kad uzima iz stare proveri da li u novoj vec postoji podudaranje, pa da ubacuje samo ako ne postoji. Naravno, posle obrises stare tabele, nove preimenujes u stare.

Nemam sad vremena da razmisljam o tome....
12.03.2004. u 14:11 

bluesman
Goran Pilipović
Beograd

Član broj: 4505
Poruke: 1885
*.5.eunet.yu

ICQ: 7987706
Sajt: www.revolution.co.yu


Profil

icon Re: Duplikati u bazi -MySql12.03.2004. u 14:28
Jedno resenje je kopiranje svih duplikata u temp tabelu, pa brisanje istih iz originalne tabele, a onda preko distinct iz temp tabele vratiti po 1 row u originalnu tabelu... da li postoji bolje, elegantnije resenje?
Goran Pilipović fka bluesman
12.03.2004. u 14:28 

noviKorisnik

Član broj: 13216
Poruke: 4513
194.247.222.*



Profil

icon Re: Duplikati u bazi -MySql12.03.2004. u 14:32
Relativno lako.

Metod 1:
Poteraš upit da ti grupiše po svim poljima koja želiš da budu jedinstvena, gde je count(*) veće od 1. Prihvatiš rezultat i provučeš ga kroz petlju gde prvo brišeš sve redove nađenih duplikata i odmah nakon toga kreiraš novi zapis sa podacima reda iz rezultata.

Metod 2:
Napraviš privremenu tabelu gde insertuješ grupisane duplikate. Potom brišeš duplikate. Na kraju prebaciš podatke iz privremene tabele i ubiješ je. Ovo bi trebalo da brže radi.

Ovo ne radi baš kako si opisao jer se brišu svi zapisi pa potom dodaje jedan, ali deluje jednostavnije za realizaciju.
12.03.2004. u 14:32 

noviKorisnik

Član broj: 13216
Poruke: 4513
194.247.222.*



Profil

icon Re: Duplikati u bazi -MySql12.03.2004. u 14:34
Eh, da - napomena: kad insertuješ u temp tabelu - ne insertuješ sve duplikate nego samo 1 zapis po svakoj grupi duplikata.
12.03.2004. u 14:34 

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


Profil

icon Re: Duplikati u bazi -MySql12.03.2004. u 16:17
napraviš drugu tabelu sa istim poljima, dodaš UNIQUE ključ na polja koja u kombinaciji moraju biti jedinstvena (adresa, grad) i uradiš jedan prosti

insert into tabela2 select * from tabela1

12.03.2004. u 16:17 

[es] :: MySQL :: Duplikati u bazi -MySql

[ Pregleda: 2027 | Odgovora: 13 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.