DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > SQL baze podataka - Sponzor: Baze-Podataka.net
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka

Odgovori
 
Alati teme Način prikaza
Staro 09. 05. 2006.   #1
Blood
Boban Karišik
Expert
 
Avatar Blood
 
Datum učlanjenja: 05.11.2005
Lokacija: Beograd
Poruke: 556
Hvala: 36
186 "Hvala" u 21 poruka
Blood is on a distinguished roadBlood is on a distinguished road
Pošaljite poruku preko Skype™ za Blood
Default duplikati

Znam da je DISTINCT da ako ima duplikata, iste pokaze samo jednom, a pokaze i sve ostale. E sada, moje pitanje je da li mogu nekako da se provere samo duplikati, znaci npr SELECT DUPLICATE('polje1') FROM 'tabela1'; i da mi on pokaze samo duplikate iz polje1.

Nadam se da me neko shvatio...


Hvala
Blood je offline   Odgovorite uz citat
Staro 09. 05. 2006.   #2
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

Mozes na primer ovako:

SELECT Count(*) AS Cnt from tabela1 GROUP BY polje1 HAVING Cnt > 1

To ti prikazuje samo broj, ako hoces i koje je to polje onda samo dodaj polje1:

SELECT polje1, Count(*) AS Cnt from tabela1 GROUP BY polje1 HAVING Cnt > 1

Ako hoces da vidis recimo kojih ima tacno 4, onda samo zameni Cnt > 1 u Cnt = 4

ako neko zna bolje - shoot

Jel' sam shvatio?
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 09. 05. 2006.   #3
dinke
Super Moderator
Invented the damn thing
 
Avatar dinke
 
Datum učlanjenja: 06.06.2005
Poruke: 2.371
Hvala: 370
701 "Hvala" u 194 poruka
dinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamendinke je pravi dragi kamen
Default

Nesto ovako ?
Kôd:
select name,count(name) as dupecount from test group by name having dupecount >1
Možda takoće postoji i neka elegantnija varijanta sa podupitima.

[edit]hehe, blues i ja postovasmo isti odgovor prakticno istovremeno [/edit]
__________________
Caught in a Web|Blogodak
With great power comes great responsibility!
dinke je offline   Odgovorite uz citat
Staro 09. 05. 2006.   #4
Blood
Boban Karišik
Expert
 
Avatar Blood
 
Datum učlanjenja: 05.11.2005
Lokacija: Beograd
Poruke: 556
Hvala: 36
186 "Hvala" u 21 poruka
Blood is on a distinguished roadBlood is on a distinguished road
Pošaljite poruku preko Skype™ za Blood
Default

ovo je super, hvala vam...
Blood je offline   Odgovorite uz citat
Staro 10. 05. 2006.   #5
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Citat:
Originalno napisao bluesman
SELECT polje1, Count(*) AS Cnt from tabela1 GROUP BY polje1 HAVING Cnt > 1
mozda lupam jer me mrzi da probam ali problem je sto ne mozes da dobijes direktno id (ili neko drugo unique polje) za duplirane recorde jer: SELECT id, polje1, count(*) .... nece raditi, jel tako?

EDIT: to bi moglo doduse lako da se resi ovako:
Kôd:
SELECT id, polje1 FROM tabela1 WHERE polje1 IN (SELECT polje1 FROM tabela1 GROUP BY polje1 HAVING count(*) > 1)
EDIT2: ispravio sam typo u kodu, spomenut u sledecoj poruci.. sad je sql ispravan..
__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 10. 05. 2006. u 11:42.
ivanhoe je offline   Odgovorite uz citat
Staro 10. 05. 2006.   #6
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

ne znam zašto ne bi mogao? Zašto misliš da neće raditi?

BTW, tvoj query sigurno ne radi, nisi ni definisao alias Cnt

Ti možeš komotono da radiš query:

SELECT *, count(*) AS Cnt FROM ... GROUP BY...

Jedina je razlika što kada koristiš SELECT COUNT(*) FROM ne moraš da grupišeš polja, dok kada imaš i neko drugo polje tipa SELECT ime1, ime2, COUNT(*) ... moraš da dodaš GROUP BY something.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Staro 10. 05. 2006.   #7
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Citat:
Originalno napisao bluesman
ne znam zašto ne bi mogao? Zašto misliš da neće raditi?
glupi primer:
Kôd:
mysql> select * from ime;
+----+--------+
| id | ime    |
+----+--------+
|  1 | mika   |
|  2 | zika   |
|  3 | pera   |
|  4 | joca   |
|  5 | tra    |
|  6 | DUMMY  |
|  7 | DUMMY  |
|  8 | DUMMY  |
|  9 | DUMMY  |
| 10 | smarty |
| 11 | smarty |
+----+--------+
11 rows in set (0.02 sec)
kad uradis upit koji ste vi rekli:
Kôd:
mysql> select *, count(*) as cnt from ime  group by ime having cnt>1;
+----+--------+-----+
| id | ime    | cnt |
+----+--------+-----+
|  6 | DUMMY  |   4 |
| 10 | smarty |   2 |
+----+--------+-----+
2 rows in set (0.03 sec)
znaci ne dobijes id-jeve svih recorda sa dupliranom vrednoscu, sto je i logicno jer smo ih grupisali..

Moj predlog je sledeci (ovog puta bez typo-a ):
Kôd:
mysql> SELECT * FROM ime WHERE ime IN (SELECT ime FROM ime GROUP BY ime HAVING count(*) > 1);
+----+--------+
| id | ime    |
+----+--------+
|  6 | DUMMY  |
|  7 | DUMMY  |
|  8 | DUMMY  |
|  9 | DUMMY  |
| 10 | smarty |
| 11 | smarty |
+----+--------+
6 rows in set (0.00 sec)
QED.

ps. Ovo gore ne moraju da budu id-jevi, recimo da postoji kolona prezime, pa te zanimaju prezimena svih ljudi sa istim imenom, ili tako nesto.. id-jevi su mi prvi pali na pamet jer ove stvari obicno sluze da se pobrisu duplikati..
__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 10. 05. 2006. u 11:48.
ivanhoe je offline   Odgovorite uz citat
Staro 10. 05. 2006.   #8
bluesman
Goran Pilipović
Sir Write-a-Lot
 
Avatar bluesman
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 5.450
Hvala: 288
1.247 "Hvala" u 446 poruka
bluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušatibluesman je osoba koju treba slušati
Pošaljite ICQ poruku za bluesman
Default

Da, to je tačno kada tražiš svaki id posebno, mislim da je on samo hteo da pokaže koji su duplikati, ovo tvoje je kompletno "rešenje".
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman
I don't always know what I'm talking about but I know I'm right!
bluesman je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum


Vreme je GMT +2. Trenutno vreme je 22:02.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.