Toon posts:

MYSQL uitkomst SELECT query verwijderen

Pagina: 1
Acties:
  • 106 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo allemaal,

Ik heb 2 databases samengevoegd, hierin zitten enkele dubbelen. om de dubbelen er uit te filteren gebruik ik de volgende query:

SELECT CONCAT(voornaam,achternaam), COUNT(*) FROM Patienten GROUP BY CONCAT(voornaam,achternaam) HAVING COUNT(*)>1

Hiermee laat hij ook netjes alle dubbel waarden in de tabel zien.

Hoe verwijderd ik de geselecteerde gegevens zonder gebruik te maken van PHP of een andere taal. Het moet puur met SQL gemaakt worden.

Hoop dat jullie een oplossing hebben

Gegroet,

Verwijderd

Verwijderd schreef op woensdag 06 juni 2007 @ 13:55:
Hoe verwijderd ik de geselecteerde gegevens zonder gebruik te maken van PHP of een andere taal. Het moet puur met SQL gemaakt worden.
Hoe verwijder je 'normaal' records?
En hoe verwijder je 'normaal' records onder bepaalde voorwaarde?

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 06 juni 2007 @ 14:00:
[...]

Hoe verwijder je 'normaal' records?
En hoe verwijder je 'normaal' records onder bepaalde voorwaarde?
DELETE FROM tabelnaam
WHERE kolomnaam = 'waarde'

Moet het daar mee kunnen dan, want zit hier echt al uren mee in mijn maag..

Verwijderd

Welke versie van MySQL heb je?
Je moet (waarschijnlijk) met subqueries gaan werken

Waarom mag het niet met PHP?

Verwijderd

Topicstarter
Versie ondersteund subqueries heb alleen geen idee hoe ik deze uitbouw tot een subquery dat hij wel werkt.

Gebruik MYSQL vanuit wamp 5 (weet zo het versienummer niet)

Er mag geen php in omdat ik weet dat het ook via sql alleen kan. Dus dan wil ik het met die taal doen :)

Verwijderd

Verwijderd schreef op woensdag 06 juni 2007 @ 14:06:
DELETE FROM tabelnaam
WHERE kolomnaam = 'waarde'

Moet het daar mee kunnen dan
Yup, in combinatie met IN/ANY http://dev.mysql.com/doc/...y-in-some-subqueries.html

[ Voor 9% gewijzigd door Verwijderd op 06-06-2007 14:13 ]


  • _Hades_
  • Registratie: Juli 2000
  • Laatst online: 22:33
subquery idd.

ligt er daarnaast nog aan _welke_ dubbel je eruit wil halen natuurlijk.

maar gewoon zorgen dat je een lijstje van id's van de dubbelen die je eruit wil flikkeren oid kan genereren (met die query in je startpost), en dan iets als "delete from patienten where id in ( <jouw query waar id's uitkomen die je weg wil gooien > );

  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:24

remco_k

een cassettebandje was genoeg

Verwijderd schreef op woensdag 06 juni 2007 @ 14:06:
[...]


DELETE FROM tabelnaam
WHERE kolomnaam = 'waarde'

Moet het daar mee kunnen dan, want zit hier echt al uren mee in mijn maag..
Het zou wel moeten lijkt me...
Alleen denk ik niet dat je
code:
1
GROUP BY CONCAT(voornaam,achternaam) HAVING COUNT

kan gebruiken. Als je een versie van MySQL hebt die subqueries ondersteund (ik dacht versie 4 en hoger) dan is dat de oplossing. (zie 'select @@version' om je mysql versie vast te stellen).
Je geeft ook wel erg weinig info, het zou handig zijn als je de tabel structuur ook even beschreef.

[ Voor 8% gewijzigd door remco_k op 06-06-2007 14:17 ]

Alles kan stuk.


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 30-11 17:18

glashio

C64 > AMIGA > PC

SQL:
1
2
3
4
5
6
7
8
9
10
11
DELETE
    Patienten
FROM
    Patienten,
    Patienten p
WHERE
    Patienten.voornaam=p.voornaam
AND
    Patienten.achternaam=p.achternaam
AND
    Patienten.id > p.id


Er vanuit gaande dat id de PRIMARY KEY is op je tabel.

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Verwijderd

Topicstarter
Ok bedankt voor de informatie. Ben nog niet echt goed in SQL

Hoe maak ik nu die query zodat hij de waardes vind en vervolgs de rijen waarin de waarden staan verwijderd?

Verwijderd

Verwijderd schreef op woensdag 06 juni 2007 @ 14:18:
Hoe maak ik nu die query zodat hij de waardes vind en vervolgs de rijen waarin de waarden staan verwijderd?
Die maak je door te gaan stoeien met de informatie die je hebt gekregen. :)

Verwijderd

Topicstarter
Versienummer is 5.0.37

De select query werkt hier zonder problemen.

De structuur van de tabel:

ID
voornaam
tussenvoegsel
achternaam
geb_datum
straat
huisnummer
postcode
woonplaatsid

Hoop dat dit is wat je bedoelt

Verwijderd

Topicstarter
glashio schreef op woensdag 06 juni 2007 @ 14:17:
SQL:
1
2
3
4
5
6
7
8
9
10
11
DELETE
    Patienten
FROM
    Patienten,
    Patienten p
WHERE
    Patienten.voornaam=p.voornaam
AND
    Patienten.achternaam=p.achternaam
AND
    Patienten.id > p.id


Er vanuit gaande dat id de PRIMARY KEY is op je tabel.
Deze werkt heel erg bedankt :D

  • remco_k
  • Registratie: April 2002
  • Laatst online: 21:24

remco_k

een cassettebandje was genoeg

Verwijderd schreef op woensdag 06 juni 2007 @ 14:26:
[...]


Deze werkt heel erg bedankt :D
En dan nu de hamvraag... Weet je ook waarom het werkt? :+

Alles kan stuk.

Pagina: 1