Toon posts:

[SQL] Gebruik DISTINCT, meerdere kolommen weergeven?

Pagina: 1
Acties:
  • 545 views sinds 30-01-2008

Verwijderd

Topicstarter
Beste tweakers, heb hier een database tabel met een aantal dubbele achternamen er in. Nu wil ik met een DISTINCT functie de dubbele records er uit filteren, bekeken op de achternaam.

Tabel 'tblSchoenmaat'
IDAchternaamSchoenmaat
1schoenmaker43
2Oskam38
3schoenmaker41
4Wageningen45
5Arts39


Mijn huidige distinct sql:
code:
1
Select distinct achternaam From tblSchoenmaat

Echter nu krijg je alleen de achternamen terug als resultaat. Hoe kan ik het voor elkaar krijgen dat ik alle kolommen mee krijg als resultaat?

Alvast bedankt voor de hulp

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Dan moet je andere criteria erbij bedenken.
Welke schoenmaat wil je bijvoorbeeld zien bij 'schoenmaker'?

Who is John Galt?


Verwijderd

Topicstarter
justmental schreef op 05 augustus 2004 @ 10:30:
Dan moet je andere criteria erbij bedenken.
Welke schoenmaat wil je bijvoorbeeld zien bij 'schoenmaker'?
Waarom moet je dan andere criteria er bij bedenken? Om de dubbele records zoiezo uit te sluiten of zo :?

  • IWriteCode
  • Registratie: Juli 2000
  • Laatst online: 21-05 13:54

IWriteCode

Less = more

Punt is... dat distinct zorgt er voor dat je geen dubbele records ziet... maar in jouw tabel voorbeeld zitten geen dubbele records als je alle kolommen wil zien... want er staan verschillende schoenmaten bij gelijke namen.

Wat wil je precies met je SQL statement bereiken?

Less = more


Verwijderd

Wat voor kolommen wil je dan zien?
Welke waarde wil je dan bijv. van kolom 'Schoenmaat' zien als achternaam 'Schoenmaker' is?
43 of 41?

Verwijderd

Nou, je hebt twee verschillende "Schoenmaker"s, met twee verschillende schoenmaten.

Als je in je uiteindelijke lijstje zowel naam als schoenmaat terug wilt zien, maar slechts één van de twee "Schoenmaker"s, dan zul je toch een keus moeten maken tussen de schoenmaten van die twee, want je kunt er dan ook maar ééntje laten zien.

Die keus moet je bedenken, en daarna in je query verwerken.

Verwijderd

@jamal:
2 zielen 1 gedachte ;)

Verwijderd

Topicstarter
Verwijderd schreef op 05 augustus 2004 @ 10:39:
Nou, je hebt twee verschillende "Schoenmaker"s, met twee verschillende schoenmaten.

Als je in je uiteindelijke lijstje zowel naam als schoenmaat terug wilt zien, maar slechts één van de twee "Schoenmaker"s, dan zul je toch een keus moeten maken tussen de schoenmaten van die twee, want je kunt er dan ook maar ééntje laten zien.

Die keus moet je bedenken, en daarna in je query verwerken.
Oké, dan de schoenmaker met de grootste schoenmaat.

Zit zelf nog aan de Group BY functie te denken...

Verwijderd

Als je de grootste schoenmaat wil hebben, gebruik je MAX met een GROUP BY, inderdaad.

Het hele DISTINCT gebeuren heb je dan niet meer nodig.

DISTINCT is alleen nodig als je door bijvoorbeeld een aantal kolommen weg te laten, twee of meer identieke rijen zou krijgen die je helemaal niet wil. Met DISTINCT kun je er dan voor zorgen dat zo'n rij maar één keer getoond wordt.

Zie voor meer informatie over GROUP BY ook het nieuwe stukje FAQ dat door curry gepend is 8).

[ Voor 74% gewijzigd door Verwijderd op 05-08-2004 10:48 ]


  • IWriteCode
  • Registratie: Juli 2000
  • Laatst online: 21-05 13:54

IWriteCode

Less = more

En laatste ze nou NET de FAQ hebben aangepast met een stukje over SQL er bij: P&W FAQ - SQL

[ Voor 44% gewijzigd door IWriteCode op 05-08-2004 10:48 ]

Less = more


Verwijderd

Topicstarter
Verwijderd schreef op 05 augustus 2004 @ 10:46:
Als je de grootste schoenmaat wil hebben, gebruik je MAX met een GROUP BY, inderdaad.

Het hele DISTINCT gebeuren heb je dan niet meer nodig.

DISTINCT is alleen nodig als je door bijvoorbeeld een aantal kolommen weg te laten, twee of meer identieke rijen zou krijgen die je helemaal niet wil. Met DISTINCT kun je er dan voor zorgen dat zo'n rij maar één keer getoond wordt.

Zie voor meer informatie over GROUP BY ook het nieuwe stukje FAQ dat door curry gepend is 8).
Bedankt voor deze reply.

Maar, stel de tabel ziet er zo uit:

Tabel 'tblSchoenmaat'
IDAchternaamGeboorte
1schoenmaker1-8-1985
2Oskam5-6-1965
3schoenmaker12-2-1973
4Wageningen3-7-1951
5Arts25-11-1945


Stel, je wilt inplaats van de grootste of kleinste schoenmaat, nu de jongste personen selecteren.

Dus bij schoenmaker de record van met een geboorte datum 1-8-1985 selecteren...

Hoe moet je dat dan in je Group BY claus. zetten?

  • IWriteCode
  • Registratie: Juli 2000
  • Laatst online: 21-05 13:54

IWriteCode

Less = more

Bezig met een schoolopdracht? Toevallig?

Je zou MIN kunnen proberen... of even een simpele SQL tutorial doorlezen... http://www.w3schools.com/sql/default.asp

Less = more


Verwijderd

uh... Vooruit, een illustratief voorbeeldje dan (maar dan ook maar één ;)) :-

(Jongste persoon = hoogste geboortedatum)

code:
1
SELECT Achternaam, MAX(Geboorte) FROM tblSchoenmaat GROUP BY Achternaam

Verwijderd

Topicstarter
Jamal schreef op 05 augustus 2004 @ 11:00:
Bezig met een schoolopdracht? Toevallig?

Je zou MIN kunnen proberen... of even een simpele SQL tutorial doorlezen... http://www.w3schools.com/sql/default.asp
Nee, niet met een schoolopdracht bezig, het is vakantie man ;)... Ik hoop niet dat ik te dom overkom ofzo :P...

Ben bezig mijn eigen forum aan het maken... (om veel van te leren, vooral op sql gebied ;))

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:36

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. Er is nu het basisgebruik van DISTINCT, MIN, MAX en Group BY besproken. :) Allemaal zaken welke eigenlijk ook op een tutorialsite over SQL te vinden zijn.

Vandaar dicht :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.