ik ben nu al een tijdje bezig het volgende voor elkaar te krijgen.
1 tabel, 2 kolommen. 3 records
voornaam achternaam
jan de boer
marga visser
jan de boer
hier wil ik de het dubbele record uit halen.
er mag nooit een dubbele combinatie bestaan. (dus mag wel vaker jan voorkomen, ook vaker de boer maar de combinatie jan de boer mag maar 1 keer voorkomen.)
het gaat om bestaande data dus de tabel structuur aanpassen met een constraint kan niet.
@rvw: Waarom LIKE? Je gebruikt geen wildcards, er moet blijkbaar een volledige match zijn, dan is een = op zijn plaats.
Verder hoef je geen kolommen of zelfs alle kolommen op te vragen, gewoon een true is meer dan genoeg. LIMIT slaat nergens op, heb je al helemaal niet nodig.
SELECT
true
FROM
tabelnaam
WHERE
voornaam = 'jan'
AND
achternaam = 'jansen';
Het is overigens wel aan te raden om het datamodel aan te passen en de data op te schonen, een constraint is namelijk de enige oplossing. Vooraf een SELECT-query is een leuk lapmiddel, maar ook niet meer dan dat.
ps. In PHP kun je met mysql_num_rows() (MySQL) of pg_num_rows() (PostgreSQL) kijken hoeveel resultaten er zijn. Zodra er meer dan 0 resultaten zijn, weet je dat er reeds iemand met deze naam in de tabel staat.
En als het model exact zo is als dat hier staat kun je nog overwegen om een gecombineerde primary key te maken van voornaam en achternaam :).
mijn vraag is alleen waarom je dat zou willen. Zo heten mijn oom en mijn opa bijvoorbeerd exact het zelfde (om maar ff een voorbeeld in de groep te gooien)
En als het model exact zo is als dat hier staat kun je nog overwegen om een gecombineerde primary key te maken van voornaam en achternaam :).
Niet doen, dat is een recept voor problemen.
Want wat ga je doen met foreign keys? Die moeten verwijzen naar een primary key maar die bestaat nu ineens uit 2 kolommen en deze waarde van de primary key kan ook nog eens veranderen. Dat wil je echt niet. De waarde van een pk mag nooit veranderen en wil je altijd in één kolom hebben staan. Zorg er voor dat je pk geen enkele betekenis heeft, dan hoeft deze nooit te veranderen en kun je nooit met fk's in de problemen komen.
@Frank, jacco bedoelt vast uniques op beide kolommen :)
Overigens KAN een naam 2 x voor komen. Mijn vriendin heeft ook nog een mede naamgenoot (voor en achternaam exact hetzelfde). Het ligt dus een beetje aan je doel wat je er mee doet.