Autor Zpráva
MartinKloubek
Profil
Potřeboval bych z velké databáze zjistit u konkrétního sloupku (např. email)
kolikrát je v tabulce (sloupku) duplicitně a případně duplicitní záznamy vypsat.

např.
jsou 2 řádky z 10000 které mají stejný email muj@email.cz a ty bych potřeboval najít a vypsat.
jak na to?

Pozor nechci primarní sloupec ty záznamy je potřeba aby byli duplicitní ale jak s nima pracovat aby bylo možné případné duplictní vypsat a ověřit.
Hledal jsem všude a nic nenalezl.

děkuji moc za radu.
martin
djlj
Profil
Nějak takto:
SELECT email, COUNT(id) AS pocet FROM tabulka GROUP BY email ORDER BY pocet

Pokud to budete chtít u konkrétního mailu, tak by mělo stačit přidat WHERE email='$email'.
MartinKloubek
Profil
Ne, ne, právě že nechci konkrétní email ale zkontrolovat celou tabulku a všechny co jsou 2x a více
vypsat.
pmasarik
Profil
spýtam sa inak, chceš zabrániť duplicitným záznamom, alebo to potrebuješ na niečo iné?
Kajman_
Profil *
zkusil bych

select count(*) pocet, a.* from tabulka a, tabulka b where a.email=b.email and a.id!=b.id group by a.id order by pocet
mila
Profil
SELECT email, count(*) pocet from tabulka having pocet>=2
MartinKloubek
Profil
pro:pmasarik

nechci zabránit duplicitě ale chci duplicitní najít a vypsat...
MartinKloubek
Profil
PRO : KAJMAN_

a nepočítá se tady se dvěma tabulkami? já že je jen jedna...
Kajman_
Profil *
a nepočítá se tady se dvěma tabulkami?

Ne.
Leo
Profil
"a nepočítá se tady se dvěma tabulkami?

Ne."

Vas zrejme mate to, ze _Kajman nepouziva AS pro prejmenovani, ma tam vlastne tohle:

FROM tabulka AS a, tabulka AS b

Leo
MzM
Profil *
:-) pořád se motáte kolem správného výsledku:

SELECT email, count(*) pocet
from tabulka
group by email
having pocet>=2

ten group sloučí stejné položky
having to omezí na výskyt opakování...
Kajman_
Profil *
:-) pořád se motáte kolem správného výsledku

Ale v zadání je vypsat počet duplicit a ty řádky (ne jen sloupeček email).
MartinKloubek
Profil
Použil jsem ten první nápad
(SELECT email, COUNT(id) AS pocet FROM tabulka GROUP BY email ORDER BY pocet )
s tím že do $mi[pocet] se předá počet duplicitních emailů .

SELECT $sekce, COUNT(id) AS pocet FROM globe_adres GROUP BY $sekce ORDER BY pocet
while(($mi = mysql_fetch_array($mista_i)))
{
if($mi[pocet] > 1){ $pole_email[] = $mi[$sekce]; }
}

to jsem se uložil do pole a v příštím dotazu je už vypsal dle pole email='$pole_email[$x]' a vypsal po řádkách obsah řádků se stejný emailem pěkně pod sebou.. a od sebe oddělil.
Přičemž $sekce jsem použil že jde prohledávat i v jiných sloupkách nežli jen v emailu.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0