YapfHoofdpagina | Info | Hulp | FAQ (veelgestelde vragen) | Speciale pagina's | Aanmelden


Printervriendelijke versie | Voorbehoud | Privacybeleid

Duplicaten in Databases

Uit Yapf

Inhoud

Hoe voorkom je dubbelen

Er zijn grofweg twee methoden, de goede en de foute. De foute is populair maar fout in elk opzicht waarin ik het uit kan drukken.

De juiste methode.

Databases kunnen zelf controleren op dubbele waardes, via een zogenaamde unique-constraint of unique-index. Hiermee kun je aangeven date een kolom, of een combinatie van kolommen, altijd een unieke waarde of combinatie van waardes moet bevatten. Komt er een INSERT of UPDATE query die een dubbele wil maken dan mislukt die query simpelweg.


De foute methode.

De voor de hand liggende maar foute methode is die van het vooraf selecteren of de waarde al bestaat. Als je een waarde kunt vinden voordat je hem invoert dan bestond hij dus al.

Dit is fout om twee redenen,.

Hoe vind je dubbelen

SQL is een bikkel als het gaat om statistiek en het vinden van dubbele data is dus ook een peulenschil. Groupeer je query op datgene wat uniek moet zijn en tel hoeveel elementen elke groep heeft. Filter vervolgens alle groepen die meer dan één element hebben.

Bijvoorbeeld, in een voorraad beheer mag elk productnummer maar één keer voorkomen omdat je van elk product maar één voorraad wilt hebben.

Voorraad: productnummer integer aantal_stuks integer


SELECT
  productnummer
  , COUNT(*) AS aantal_keer_gevonden
FROM
  voorraad
GROUP BY
  productnummer
HAVING
  COUNT(*) > 1

De HAVING filtert hier de uitkomst van de GROUP BY zodat alleen productnummers die meer dan 1x voorkomen worden getoond. De virtuele kolom aantal_keer_gevonden geeft aan hoevaak het productnummer in de tabel voorkomt (niet te verwarren met het aantal sukts voorraad!)

Ontvangen van "http://www.yapf.net/index.php/Duplicaten_in_Databases"

Deze pagina is 652 maal bekeken. Deze pagina is het laatst bewerkt op 16 okt 2011 om 09:18.


Zoeken

Bladeren
Hoofdpagina
Gebruikersportaal
In het nieuws
Recente wijzigingen
Willekeurige pagina
Hulp
Bewerken
Brontekst bekijken
Hulp bij bewerken
Paginaopties
Overlegpagina
Nieuw kopje
Printervriendelijke versie
Pagina-informatie
Paginageschiedenis
Verwijzingen naar deze pagina
Verwante wijzigingen
Mijn pagina's
Aanmelden / registreren
Speciale pagina’s
Nieuwe pagina's
Bestandslijst
Statistieken
Meer…