Het is weer zover. Na uren klooien gooi ik het maar weer eens in de groep.
De situatie:
Een gevulde database (300.000 records) bevat een hoop rommel die ik nu probeer op te ruimen. Een onderdeel daarvan is dat emailadressen maar 1x mogen voor komen. Oftewel: alle records met hetzelfde emailadres moeten gemerged worden, waarbij ik het record met de meeste (adres) data wil behouden.
Het geheel met één query oplossen lukt zowiezo niet, dus heb ik de query in stukjes gehakt.
1: Selecteer alle e-mailadressen die meerdere keren voorkomen in de tabel member.
2: Vervolgens voer ik die e-mailadressen aan de volgende query, waarbij ik een aantal velden samenvoeg en de lengte ervan bereken.
Echter bij bovenstaande query krijg ik wel de maximale lengte terug, maar niet het bijbehorende id (mem_id). Nou doe ik hier waarschijnlijk weer iets heel stoms verkeerd, maar ook met behulp van subqueries (zoals op deze site uitgelegd wordt) krijg ik het niet voor elkaar.
Help!
De situatie:
Een gevulde database (300.000 records) bevat een hoop rommel die ik nu probeer op te ruimen. Een onderdeel daarvan is dat emailadressen maar 1x mogen voor komen. Oftewel: alle records met hetzelfde emailadres moeten gemerged worden, waarbij ik het record met de meeste (adres) data wil behouden.
Het geheel met één query oplossen lukt zowiezo niet, dus heb ik de query in stukjes gehakt.
1: Selecteer alle e-mailadressen die meerdere keren voorkomen in de tabel member.
code:
1
| SELECT email FROM mem GROUP BY email HAVING ( COUNT(email) > 1 ) |
2: Vervolgens voer ik die e-mailadressen aan de volgende query, waarbij ik een aantal velden samenvoeg en de lengte ervan bereken.
code:
1
2
3
4
| SELECT mem_id, email, MAX(LENGTH(CONCAT(initials, firstname, insertion, lastname, street, zipcode, city, phone_mobile))) AS length FROM mem WHERE email IN ($email) GROUP BY email ORDER BY email |
Echter bij bovenstaande query krijg ik wel de maximale lengte terug, maar niet het bijbehorende id (mem_id). Nou doe ik hier waarschijnlijk weer iets heel stoms verkeerd, maar ook met behulp van subqueries (zoals op deze site uitgelegd wordt) krijg ik het niet voor elkaar.
Help!