Avatar billede gulvflaesk Nybegynder
05. juli 2011 - 23:25 Der er 12 kommentarer og
2 løsninger

Finde felter som er ens?

Hej Eksperter,

Jeg har en database med ca. 10000 poster. Der er nogle felter som er ens og det får min hjemmeside til ikke at virke. Altså feltet 'slug' har bl.a. indholdet 'hummersuppe' flere gange.

Hvordan finder jeg de som er ens nemmest? Altså vil helst ikke gennemgå 10000 poster :-)

Håber nogen kan hjælpe...
Avatar billede swiatecki Novice
05. juli 2011 - 23:30 #1
Avatar billede kjeldsted Novice
05. juli 2011 - 23:32 #2
Ved ikke om der findes noget i MySQL til det. (Hvis der gør er jeg meget interesseret i at vide hvordan).

Og så ved jeg heller ikke om jeg er 100% med på hvad du vil. Vil du bare have at den ikke skal vise dublanter, eller skal de bare slettes fra databasen?

For sidst nævnte kan laves med lidt simpel PHP (hvis du da bennytter PHP).
Avatar billede gulvflaesk Nybegynder
05. juli 2011 - 23:47 #3
Det er en lige præcis en søgning som skal vise dublanter for feltet 'slug'. Den skal ikke slette, for jeg skal have rettet det til eksempelvis 'hummersuppe-1'...

Jeg benytter PHP, men ved ikke lige hvordan det skal gribes an? Jeg har ikke selv bygget hjemmesiden...
Avatar billede pi-hus Nybegynder
05. juli 2011 - 23:50 #4
Prøv noget i stil med det her:


SELECT slug, COUNT(*)
FROM [tabelnavn]
GROUP BY slug
HAVING COUNT(*) > 1


Så skulle du få de "slug" der er dubletter af. Og en optælling af hvor mange dubletter der er.
Avatar billede pi-hus Nybegynder
05. juli 2011 - 23:51 #5
Hovsa, det var præcis samme typw løsning swiatecki linkede til.
Avatar billede gulvflaesk Nybegynder
05. juli 2011 - 23:57 #6
Hov havde slet ikke set Swiatecki's svar, ups.

Kunne i ikke tænke jer at dele point'ne? Så skal Swiatecki lige smide et svar.

Et lille bonusspørgsmål, hvordan kan jeg redigere resultaterne, de kommer jo bare ud på en liste uden redigeringsmuligheder?

Tusinde tak for hjælpen!
Avatar billede kjeldsted Novice
06. juli 2011 - 00:09 #7
Hvis du fx vil have at de der hedder hummersupper, hummersuppe og hummersupper skal omdøbes til hummersuppe-1, hummersuppe-2 osv. ville jeg i PHP første lave en MySQL query til at hente alle data og så opdatere indholdet hvis der er tale om en dublant med tilføjelsen "-" + nummeret på dublanten. Hvis jeg forstår dig ret.
Avatar billede gulvflaesk Nybegynder
06. juli 2011 - 00:11 #8
Det lyder smart, men så stærk er jeg ikke (endnu) i PHP ;-)

Men tak for forslaget...
Avatar billede kjeldsted Novice
06. juli 2011 - 00:23 #9
Hvis du kører resultatet af den query som både gulvflaesk go pi-hus foreslår, igennem en while-loop med mysql_fetch_assoc() kan du jo få PHP til at tjekke om den række den har fat i er lig den forrige. I så fald skal den udskrifte navnet ved at ligge én til. Ellers skal den ikke.

$ext = 0;
while($row = mysql_fetch_assoc($result))
{
    if($prev_slug == $row['slug'])
    {
        $ext++;
        $set_ext = $row['slug'].'-'.$ext;
        $id = $row['id'];
        mysql_query("UPDATE FROM blabla SET bla='$set_ext' WHERE id='$id'");
    }
    else
    {
        $ext = 0;
    }
}

Noget a lá.
Avatar billede gulvflaesk Nybegynder
06. juli 2011 - 00:28 #10
Tak det vil jeg prøve at få til at virke!

Tusinde tak :-)
Avatar billede kjeldsted Novice
06. juli 2011 - 08:52 #11
Og husk lige at mysql_queryen måske nok ikke skal copypastes direkte men modificeres en smule :)
Avatar billede swiatecki Novice
06. juli 2011 - 11:45 #12
Svar :)
Avatar billede gulvflaesk Nybegynder
06. juli 2011 - 21:17 #13
Tak for hjælpen allesammen.
Avatar billede kjeldsted Novice
06. juli 2011 - 21:26 #14
Det var så lidt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester