login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Dubbele rijen verwijderen (Opgelost)

Offline Eefje_1987 - 11/05/2009 16:21
Avatar van Eefje_1987Nieuw lid Hoi,

Ik moet gegevens uit een database halen, jammer genoeg zitten sommige gegevens dubbel in de database. De gegevens in die dubbele rijen zijn gelijk. De dubbele rijen zouden eruit gehaald moeten worden in de SQL statement.

Weet iemand raad? Alvast bedankt!

8 antwoorden

Gesponsorde links
Offline Koen - 11/05/2009 16:23
Avatar van Koen PHP expert Wil je ze verwijderen, of gewoon zorgen dat je ze niet selecteerd bij het ophalen?

In het geval van het laatste kan je gemakkelijk MySQL.com: DISTINCT gebruiken in je select statement 
Offline ArieMedia - 11/05/2009 16:28
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Wat ook nog mogelijk is, is dat je bij het ophalen misschien mysql_fetch_array() gebruikt en dit in een while gooit?

Dan krijg je inderdaad dubbele resultatien

mysql_fetch_array() => nummer dus [0], [1] ect. en het naam komt mee dus ['titel'], ['content]

mysql_fetch_assoc() => alleen de naam;
mysql_fetch_row() => de nummertjes;
mysql_fetch_object() => naam (met $obj->veldnaam)
Offline Eefje_1987 - 11/05/2009 16:40
Avatar van Eefje_1987 Nieuw lid Aja, was ik er vergeten bij te zetten 

Distinct werkt niet. Dus ik zou een andere methode moeten hebben. Met distinct blijven er dubbele rijen inzitten.
Offline Koen - 11/05/2009 16:42
Avatar van Koen PHP expert
Arie2Zero schreef:
Wat ook nog mogelijk is, is dat je bij het ophalen misschien mysql_fetch_array() gebruikt en dit in een while gooit?

Dan krijg je inderdaad dubbele resultatien

mysql_fetch_array() => nummer dus [0], [1] ect. en het naam komt mee dus ['titel'], ['content]

mysql_fetch_assoc() => alleen de naam;
mysql_fetch_row() => de nummertjes;
mysql_fetch_object() => naam (met $obj->veldnaam)


o.O volgens mij begrijp je ze verkeerd.... 

Distinct moet toch echter werken, welke code gebruikte je?
Offline marten - 11/05/2009 16:46
Avatar van marten Beheerder denk dat je hier wel wat aan hebt

http://www.4guy...00-2.shtml
Offline Martijn - 11/05/2009 17:15 (laatste wijziging 11/05/2009 17:15)
Avatar van Martijn Crew PHP wat een oplossing zou kunnen zijn, maar beetje omslachtig,

Selecteer alles, en count elke id

  1. while($fetch = mysql_fetch_assoc($query)){
  2. $ding[$fetch['dingDatDubbelKanZijn']]+=1;
  3. }


en dan met een foreach die doorlopen en als $ding[x] >1, deleten.

K zou ook geloof een iets maken wat telt of er niet als iets in de database is voordat ie het toevoegd
Offline Richard - 12/05/2009 07:48
Avatar van Richard Crew algemeen Ga eerst eens kijken waarom er uberhaupt dubbelen in de database zitten, dat is veel belangrijker dan ze er uit halen.

Dan gooi je eerst alles dubbel weg (ik ga ervan uit dat je ergens een auto_increment kolom hebt, anders was het met DISTINCT in een SELECT wel gelukt):

  1. <?php
  2. // veld1 is dus je auto_increment, niet ophalen!
  3. $query = "
  4. SELECT DISTINCT veld2, veld3, veld4
  5. FROM tabel";
  6. $result = mysql_query($query, $link);
  7. if(!$result) {
  8. // balen...
  9. }
  10. if(!mysql_query("TRUNCATE tabel")) {
  11. // nogmaals: balen...
  12. }
  13. while($row = mysql_fetch_assoc($result)) {
  14. $query = "
  15. INSERT INTO tabel
  16. (veld2, veld3, veld4)
  17. VALUES(
  18. '" . mysql_real_escape_string($row['veld2'], $link) . "',
  19. '" . mysql_real_escape_string($row['veld3'], $link) . "',
  20. '" . mysql_real_escape_string($row['veld4'], $link) . "'
  21. )";
  22. if(!mysql_query($query, $link)) {
  23. // godver, zet maar een backup terug! :-)
  24. }
  25. }


Zoiets, ongeveer ;)
Offline Eefje_1987 - 13/05/2009 13:10
Avatar van Eefje_1987 Nieuw lid Uitendelijk toch gevonden!

Ik heb mijn een union gebruikt, die haalt blijkbaar de dubbele rijen er uit. Het is dus opgelost 

Toch bedankt aan allen!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.279s