MySQL Distinct probleem

Pagina: 1
Acties:

  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Ik heb het volgende probleem ik heb al het hele got doorzocht en kon het antwoord niet vinden.

Dit is mijn probleem:

Deze Query

INSERT INTO temp SELECT DISTINCT ".$veldnaam." FROM importbase;

werkt niet ik denk dat ik wel al weet waar het aan ligt ik denk dat het komt omdat hij nu alleen de records uit de DB haalt die overeen komen met $veldnaam en dus alle andere records er niet uit haalt.

INSERT INTO temp SELECT DISTINCT ".$veldnaam.",alle,andere,velden FROM importbase;

als ik dat doe dan doet hij het niet goed want dan voert hij de distinct ook uit op alle ander velden in de DB en dan hou ik maar 2 records over van de 2701 dus dat gaat ook niet goed.

Nou Snap ik niet wat ik verkeerd doe, kan iemand mij effe vertellen wat ik fout doe of kan het niet in een string.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 12 februari 2002 13:20 schreef Necrocon het volgende:
werkt niet ik denk dat ik wel al weet waar het aan ligt ik denk dat het komt omdat hij nu alleen de records uit de DB haalt die overeen komen met $veldnaam en dus alle andere records er niet uit haalt.

als ik dat doe dan doet hij het niet goed want dan voert hij de distinct ook uit op alle ander velden in de DB en dan hou ik maar 2 records over van de 2701 dus dat gaat ook niet goed.
Misschien is het wat handig om leestekens in je posts te gebruiken. Het leest echt niet prettig! Nu begrijp ik niet echt veel van je post, vanwege het ontbreken van die leestekens...

  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Wat nou lees tekens je kunt toch wel letters lezen omdat mijn zinnen niet lekker lopen ga je een beetje lopen zeuren :'( .

Ik zou als iemand dat opschreef precies begrijpen wat diegene bedoelde.

Jij bent zeker leraar nederlands ofzo, damn ik dacht dat ik dat achter de rug had.

Als je die Code-optie bedoeld vergeet dan wat hier boven staat en ik neem mijn woorden terug, want ik weet niet hoe dat moet.

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 09-09 11:37

Martijn02

/* No Comment */

Wij niet.

Het is me ook niet duidelijk wat je nou eigenlijk wil. Waarom gebruik je distinct? wat is je doel? Hoe ziet je tabel er uit?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

vertaal slag :)
Op dinsdag 12 februari 2002 13:20 schreef Necrocon het volgende:
Ik heb het volgende probleem. Ik heb al heel got doorzocht en kon het antwoord niet vinden.

Dit is mijn probleem:

Deze Query
code:
1
INSERT INTO temp SELECT DISTINCT ".$veldnaam." FROM importbase;

werkt niet.
Ik denk dat ik wel al weet waar het aan ligt. Ik denk dat het komt omdat hij nu alleen de records uit de DB haalt die overeen komen met $veldnaam en dus alle andere records er niet uit haalt.
code:
1
INSERT INTO temp SELECT DISTINCT ".$veldnaam.",alle,andere,velden FROM importbase;

als ik dat doe dan doet hij het niet goed want dan voert hij de distinct ook uit op alle ander velden in de DB en dan hou ik maar 2 records over van de 2701 dus dat gaat ook niet goed.

Nou snap ik niet wat ik verkeerd doe, kan iemand mij effe vertellen wat ik fout doe of kan het niet in een string.
ik moet zeggen dat het niet echt een duidelijke post is :)
Jij snapt je probleem maar wij moeten het ook kunnen snappen voor we het kunnen oplossen :)
zie ook: [topic=397053/1/25]

Doet iets met Cloud (MS/IBM)


  • Zorro
  • Registratie: Juli 1999
  • Laatst online: 13-09 07:54

Zorro

Z

Na ff zoeken in de MySQL online documentatie:

DISTINCTROW gebruiken ipv DISTINCT?

(weet ik niet hoor, staat verder niks uitgelegd, dus ik weet niet of er nou per "distinct .$veldnaam" een row uitkomt, of dat hij alleen rows laat zien die compleet distinct zijn) :?

How does it feel to be the greatest guitarist in the world? I don't know, go ask Rory Gallagher. —Jimi Hendrix quote from Rolling Stone magazine interview.


  • Martijn02
  • Registratie: September 2000
  • Laatst online: 09-09 11:37

Martijn02

/* No Comment */

Dankje D2k. Nu nog wat leestekens en we kunnen beginnen met lezen...
als ik dat doe dan doet hij het niet goed want dan voert hij de distinct ook uit op alle ander velden in de DB en dan hou ik maar 2 records over van de 2701 dus dat gaat ook niet goed.
pffffff :)

  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Oh mijn god zeg wat zijn jullie toch allemaal goed zeg ohoh oh nou gefeliciteerd, damn zeg.

Iemand stelt een vraag doet dit bijna nooit is niet zo'n super gotter en wat gebeurd er de een na de ander begint te zeiken tegen je nee dat is lekker goed voor nieuwelingen op dit board.

Zorro bedankt voor je Tip ik ga hem uitzoeken en ik post nog wat de uitkomst is.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 12 februari 2002 13:28 schreef Necrocon het volgende:
Wat nou lees tekens je kunt toch wel letters lezen omdat mijn zinnen niet lekker lopen ga je een beetje lopen zeuren :'( .
Ik zeg het ook alleen maar voor jou bestwil. Ik moest de zin 4x overlezen voordat ik er iets uit kon opmaken. Met een paar komma's of punten gaat veel simpeler.
Ik zou als iemand dat opschreef precies begrijpen wat diegene bedoelde.
Niet iedereen heeft die gave. Ik hou zelf van meer opgemaakte tekst...
Jij bent zeker leraar nederlands ofzo, damn ik dacht dat ik dat achter de rug had.
Spelling is en blijft belangrijk. Als jij een brief naar een werkgever schrijft, zorg je er toch ook voor dat het er netjes uitziet?

Maar laten we nu deze discussie over leesstekens stoppen... en door gaan discussiëren over je query...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op dinsdag 12 februari 2002 13:38 schreef Necrocon het volgende:
Oh mijn god zeg wat zijn jullie toch allemaal goed zeg ohoh oh nou gefeliciteerd, damn zeg.
uhm huh?
Iemand stelt een vraag doet dit bijna nooit is niet zo'n super gotter en wat gebeurd er de een na de ander begint te zeiken tegen je nee dat is lekker goed voor nieuwelingen op dit board.
joehoe als je uitleg duidelijk is is er sneller een oplossing toch?
Ik zie het probleem niet eik?........

Doet iets met Cloud (MS/IBM)


  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Oke ik begin opnieuw:

Doel:
- In 1 Query een TABLE filteren op dubble email adressen en deze gefilterd dan naar een andere TABLE copieen.

Probleem:

Query:
$veldnaam = email;
INSERT INTO temp SELECT DISTINCT ".$veldnaam.", * FROM importbase;

Wat doet deze Query die selecteerd alleen de emailadressen en copieerd deze dan in de TABLE "temp".

Maar ja dat wil dus niet want het aantal Colums komt dan niet over een en dan doet ie dus niks.

Collums zijn:
|idnr|naam|email|geslacht|

DISTINCTROW is niet de oplossing.

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 09-09 11:37

Martijn02

/* No Comment */

Ok, is al stukken beter
code maak je door je spullen tussen [ code ] [ / code ] te zetten... (zonder spaties)
code:
1
INSERT INTO temp SELECT DISTINCT email, * FROM importbase;

(ffies ietsje simpeler gemaakt)

'email,*' werkt niet volgens mij. Zet daar alle velden neer (in de volgorde dat ze in de nieuwe tabel kunnen)

/edit
Verder zou ik eerst even een select proberen, en het resultaat daarvan bekijken. Dit zou in het formaat moeten zijn dat het zo de nieuwe tabel in kan.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op dinsdag 12 februari 2002 13:47 schreef Necrocon het volgende:
Query:
$veldnaam = email;
INSERT INTO temp SELECT DISTINCT ".$veldnaam.", * FROM importbase;.
Doet de query wel wat zonder INSERT INTO temp erbij (dus alleen SELECT DISTINCT ...)?

Bovendien moeten strings in PHP tussen aanhalingstekens... maar ik neem aan dat dit pseudocode is.

  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Nee dat wil ook niet want dan gaat hij die DISTINCT op al die velden uitvoeren en dan hou ik dus van de 2000 records nog maar 2 over 1 man en 1 vrouw.
PHP:
1
2
3
<?
$table_vullen ="INSERT INTO temp SELECT DISTINCT ".$veldnaam.", * FROM importbase;";
?>

Geeft idd een error, van dat er een fout zit in de Query.
PHP:
1
2
3
<?
$table_vullen ="INSERT INTO temp SELECT DISTINCT ".$veldnaam." FROM importbase;";
?>

Is de foute code en dan zegt ie het aantal collomen komt niet overeen.

Ja zonder Insert Into doet hij idd wel wat want dan is er niet een aantal kollommen wat overeen hoeft te komen, maar dan alleen de onderste kode, de bovenste geeft dan een error.

Hey he weer wat geleerd. :)

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 09-09 11:37

Martijn02

/* No Comment */

geef eens de code die je gebruikte toen je maar 2 rijen terug kreeg? en de resultaten die je toen kreeg?

/edit laat maar, ik heb zelf ook even mee ge-experimenteerd... Mischien kan je beter iets doen met group-by. Dat je ze laat groeperen per emailadres, en dan 1 per groep doorlaten...

Even denken hoe hoor... idee moet even bezinken

  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Dat was deze code toen kreeg ik maar 2 records terug.
PHP:
1
2
3
<?
$table_vullen ="INSERT INTO temp SELECT DISTINCT idnr,naam,email,geslacht * FROM importbase;";
?>

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 09-09 11:37

Martijn02

/* No Comment */

code:
1
INSERT INTO temp SELECT * FROM importbase group by email;

Hoe vind je deze?

  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Kool volgens mij doet ie het, wat doet GROUP BY precies??

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 09-09 11:37

Martijn02

/* No Comment */

Het maakt groepjes van de verschillende email adressen. Steeds dezelfde bij elkaar. En dan kan je daar gegevens van opvragen met max(), min(), avg() en sum() enzo.
Zo kan je dus gegevens per emailadres bekijken. Dus als je je tabel een kolom 'leeftijd' heeft kan je per emailadres de gemiddelde leeftijd zien.

Eigenlijk is het dus niet voor dit gebruik bedoeld. Maarja, het voldoet.

  • Mini-me
  • Registratie: November 1999
  • Niet online
Volgens mij probeer jij niets anders te doen dan een subquery te maken en MySQL ondersteunt dat simpelweg niet. Ik zou het oplossen door een array te maken van alle rows en vervolgens in die arrays met een zelfgeschreven functie de dubbelen eruit gaan filteren.

  • Necrocon
  • Registratie: Januari 2000
  • Laatst online: 29-01-2024
Oke dan hartelijk bedank idd geval het werkt.

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 09-09 11:37

Martijn02

/* No Comment */

Op dinsdag 12 februari 2002 14:24 schreef Mini-me het volgende:
Volgens mij probeer jij niets anders te doen dan een subquery te maken en MySQL ondersteunt dat simpelweg niet. Ik zou het oplossen door een array te maken van alle rows en vervolgens in die arrays met een zelfgeschreven functie de dubbelen eruit gaan filteren.
Je zag SELECT in een statement en dacht subquery?

Dit is het enige geval (of iig een van de weinige) wat wel werkt, ik weet niet of jet het een subquery mag noemen, maar zo werkt het wel.
Pagina: 1