Dubbele records verwijderen

Status
Niet open voor verdere reacties.

hermanvg

Gebruiker
Lid geworden
23 dec 2010
Berichten
20
Ik heb een database compleet met allemaal leden van een vereniging.
Nu wil ik een mailing rondsturen en heb een Query genaakt waardoor er een nieuwe tabel komt met namen met E-mail adressen.

Nu wil ik dat een E-mail adres maar 1 maal wordt weergegeven. Bijvoorbeeld uit 1 gezin zijn 3 leden met hetzelfde adres.
Zij behoeven echter maar 1 mail te ontvangen.

Hoe kan ik dit doen?
 
Of het in Access ook aanwezig is weet ik niet maar in MySQL kun je "DISTINCT" gebruiken in een query.

Dan krijg je zoiets
[sql]
SELECT name, DISTINCT email FROM table
[/sql]

Wellicht is er iets in die richting voor Access :)
 
Ik neem aan dat je in je query voor elk familielid een eigen record hebt in je query, met hetzelfde emailadres, en in dat geval werkt de sql hierboven niet geweldig, omdat je daarmee nog steeds elke persoon met een eigen record hebt, en dus nog net zoveel emails als daarvoor. Ik denk dus dat je een procedure moet maken waarbij je de gegevens per gezin samenvoegt in één record, en op basis daarvan een email query maakt.
 
Klopt elk gezinslid heeft een eigen record.
Hoe gaat dat samenvoegen.
Ik wil eigenlijk gewoon de overbodige E-mail adressen niet zien.
 
Da's een heeeel lang verhaal, en dat kun je dus veel beter bekijken in een voorbeeldje. Er moet namelijk het e.e.a. geprogrammeerd worden. Ik zou zeggen: bestudeer het voorbeeld, en kijk of je het kunt omzetten naar je eigen db!
 

Bijlagen

Bedankt. Ziet er even moeilijk uit.
Is inderdaad een beetje programmeerwerk.
Vanuit de DB heb ik een tabel gemaakt met alle namen en hun E-mail adres.
Waarmee moet ik deze tabel dan mee samenvoegen?
 
De procedure gebruikt een extra tabel; in mijn geval heb ik een tabel gemaakt door de brontabel te kopiëren, en te plakken als Structuur. Daarmee heb je wel de veldeigenschappen, maar niet de data. En dat is meestal wel wat je wilt. Al mag het natuurlijk ook een eigen tabel zijn. Zolang de tabel maar bestaat, en dezelfde naam heeft als de tabel die in de procedure wordt gebruikt. Je kopieert dus uiteindelijk de data van de ene tabel naar de andere.
 
Het gaat moeizaam hoor. Valt een beetje tegen tot nu toe.
Ik maak een tabel met alle E-mail adressen, en noem deze mailing.
Van deze tabel maak ik een formulier en noem deze mailing.
Van de tabel mailing (met alle E-mail adressen) maak ik een kopie alleen de structuur en noem deze maling def.
En wat moet ik dan doen?
 
Als je er niet uit komt zou ik zeggen: maak er een voorbeeldje van; de techniek in mijn voorbeeld zou redelijk voor zichzelf moeten spreken. Als je tenminste wat van VBA snapt :D Er komt in ieder geval geen formulier aan te pas, behalve dan dat je een knop nodig hebt die de procedure start. In die procedure wordt de tijdelijke tabel geleegd, en de tabel met email adressen geopend. vervolgens loopt de procedure door alle records heen, en verzamelt vervolgens de bij elkaar horende gegevens. Nogmaals: als je de procedure zelf niet kunt ombouwen, is het een stuk handiger als je een voorbeeldje post.
 
knvb achternaam tv voornaam elftal e-mail adres e-mail adres 2

Dit zijn mijn kolom namen.
In de kolom e-mail adres staan adressen soms meermalen vermeld.
Deze il k maar 1 maal zichtbaar hebben.

Ja en van VBA snap ik eigenlijk niets van.
 
Met een voorbeeldje kan ik meer; op basis van veldnamen kan ik niet zo veel doen. Anders dan naar het voorbeeld vewijzen :)
 
Eerst overbodige zaken zoals afbeeldingen er uit halen, eventueel tabellen die niet nodig zijn voor de vraag verwijderen, de database comprimeren en dan zippen. Met Winrar kun je hem nog opsplitsen in brokken van 100kb. Dat zou genoeg moeten zijn om hem te posten :)
 
Nu we (eindelijk) een db hebben, kunnen we zien wat er gaande is. En dat is niet optimistisch op dit moment. Ik zie twee tabellen die identiek zijn, met daarin weliswaar losse records voor alle spelers, maar er is geen overkoepelend gegeven. Dus hoe weet je welke records bij elkaar horen? Als ik kijk naar de achternaam Jansen, wat een redelijk gangbare naam is in Nederland, dan zie ik daar 10 records staan. Moet ik er nu van uit gaan dat die allemaal van hetzelfde gezin zijn? Andere naam: Huisman. 4 spelers, met alle 4 een apart email adres. Hoe weet ik naar welk adres de mail moet, en of ze bij elkaar horen? Op deze manier kun je geen samenvoeginging maken vrees ik.
 
Dus dan zal het moeilijk worden om een bestand te genereren waarin elk e-mail adres maar 1 keer voorkomt
 
Yep. Er is een oplossing, maar dan moet je je hoofdtabel aanpassen. Om te beginnen: voeg een ja/Nee veld toe met (bijvoorbeeld) de naam [Hoofdlid]. Verder heb je nog een veld nodig waarin je bij de overige familieleden verwijst naar het record van het hoofdlid, bijvoorbeeld [ParentID]. Omdat je nog geen sleutelveld hebt in je tabel (althans niet in het voorbeeld) kun je dat daar prima voor gebruiken. Maak dan een veld [LidNr] aan van het type Autonummer, dan krijg je automatisch unieke nummers. Daar kun je dan naar verwijzen. In het voorbeeld heb ik dan voor de familie dan 5 records, die dan van bijvoorbeeld 2 families zijn. Stef is dan Hoofdlid, en heeft nummer 15 gekregen. Jeroen en Dennis zijn lid van hetzelfde gezin, en die krijgen dan in het veld [ParentID] de waarde 15. Herman met Record 16 is van een andere familie, dus die wordt weer Hoofdlid; zijn zus Anneke krijgt dan bij ParentID de waarde 17. En zo werk je de hele lijst af.
 
OK. Het ID veld met autonummer zit in de tabel compleet. mailing haalt de gegevens uit de tabel compleet. Dan ga ik dus de tabel compleet aanpassen met een extra veld hoofdlid. De familie leden verwijs ik dan daar naar.
We gaan weer verder.
 
Vermoedelijk ben je dan ook gelijk van je probleem af; elk eerste lid van een familie maak je hoofdlid, ook als er maar één persoon lid is. Als je de mailing dan baseert op een selectie op het veld Hoofdlid, heb je volgens mij ook de mailing die je zoekt: van elke familie zit er dan namelijk maar één adres in de mailing.
 
Het is gelukt.
Ik heb een veld hoofdlid toegevoegd en de selectie daarop losgelaten.
Komt een mooi lijstje uit. Bdankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan