[ASP/SQL] dubbele records filteren

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

  • user109731
  • Registratie: Maart 2004
  • Niet online
Ik heb een Access database waar een bepaald veld soms dezelfde waarde heeft. Nu wil ik dat hij er dan 1 kiest, en niet alle records. Voorbeeld:

Record1, Naam = Jansen
Record2, Naam = Pieters
Record3, Naam = Klasen
Record9, Naam = Jansen

Nu wil ik dus dat ie de records 1,2 en 3 teruggeeft. (of 2, 3 en 9)
Ik heb ook al met google gezocht, maar nix gevonden. Ik denk dat t iets is met GROUP BY, maar weet dit niet zeker.

BVD

PS: ik heb de search gebruikt, maar t kan zijn dat ik verkeerd heb gezocht.

  • Batsies
  • Registratie: Mei 2002
  • Laatst online: 27-01-2022

Batsies

E-Developing

Distinct gebruiken select distinct(naam) from ...

E-Developing


Verwijderd

gebruik : select distinct blablabla

  • mbrouwer
  • Registratie: September 2001
  • Laatst online: 21-12-2025
Je moet waarschijnlijk eens zoeken in de buurt van het "select distinct Naam" commando.

"And As A Finishing Touch... God Created The Dutch"


  • user109731
  • Registratie: Maart 2004
  • Niet online
Bedankt, zal gelijk effe gaan kijken!

  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
AFAIK werkt distinct enkel op row-level niveau (op de volledige row dus die je ophaalt).

Trouwens, hoe wil je bepalen welke waarde hij voor het ander veld dan moet nemen? Maw, hoe wil je bepalen of hij nu record 1 of record 9 moet tonen?
Als je tabel slechts 1 veld heeft, of je wilt slechts één veld ophalen, dan kan je idd met een DISTINCT werken:
code:
1
select distinct naam from tabel

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 31 mei 2004 @ 21:18:
gebruik : select distinct blablabla
Dat geldt alleen als je de namen wil terughebben, uit het verhaal van de topicstarter maak ik op dat hij het hele record wil terughebben; dan werkt distinct niet. :)

VB_programmer, welke van de twee varianten wil je hebben? Aangezien een database niet willekeurig een record kan kiezen.

edit:
whoami, wees eens niet een paar seconden sneller dan mij.. :P

[ Voor 9% gewijzigd door gorgi_19 op 31-05-2004 21:21 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • user109731
  • Registratie: Maart 2004
  • Niet online
Maakt niet uit, kan hij niet de eerste kiezen, tis maar een idee?

  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
VB_programmer schreef op 31 mei 2004 @ 21:22:
Maakt niet uit, kan hij niet de eerste kiezen, tis maar een idee?
Nee. Zoals ik en gorgi al gezegd hebben, zal jij moeten aangeven welk record hij moet kiezen.
Tenzij je slechts dat ene veld uit je tabel wilt halen, en DISTINCT gebruikt, dan worden alle dubbele rijen eruit gefiltert.

https://fgheysels.github.io/


  • user109731
  • Registratie: Maart 2004
  • Niet online
Dit moet toch wel kunnen met SQL ??!
De records bevatten inderdaad meer velden dan alleen naam.

Toch bedankt allemaal!

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

VB_programmer schreef op 31 mei 2004 @ 21:27:
Dit moet toch wel kunnen met SQL ??!
De records bevatten inderdaad meer velden dan alleen naam.

Toch bedankt allemaal!
Eerste wat in me opkomt is om alles bij te houden in bijvoorbeeld het dictionary-object in ASP (en wel alles te selecteren en in ASP dus uit te gaan zoeken). Vervolgens ga je het resultaat 'cachen' in een Application-variabele.

Wil je het perse in een database gaan oplossen, dan is het eerste wat in me opkomt om met temp tables te gaan werken. Of je hier vrolijk van gaat worden is een tweede.

[ Voor 16% gewijzigd door gorgi_19 op 31-05-2004 21:30 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • user109731
  • Registratie: Maart 2004
  • Niet online
Sorry Whoami!!!!!! Ik had jouw reactie nog niet gelezen, dus vandaar.
Misschien idee: is het niet mogelijk om eerst alleen veld naam te filteren met distinct, en dan de unieke ID's op te slaan, en die dan uitlezen oid?

  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
Welke velden staan er anders nog in die tabel ?

https://fgheysels.github.io/


  • user109731
  • Registratie: Maart 2004
  • Niet online
Aardig wat: Adres, Postcode, woonplaats, Telefoonnummer.

  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
En wat wil je dan eigenlijk gaan doen met die unieke namen ?

https://fgheysels.github.io/


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 31-12-2025

MBV

waarom gebruik je niet een 'group by' statement?
code:
1
2
3
SELECT naam, COUNT(gegeven)
FROM gebruikers
GROUP BY naam

weet alleen niet of dit gaat werken ivm string-veld. Dat is wel hoe het werkt met ID's

En zoieso, waarom gebruik je geen genormaliseerde database? Als er 2 verschillende mensen 'jansen' heten, moet je toch onderscheid kunnen maken? Misschien moet je iets meer vertellen, dat ik het dan beter snap. Er zijn situaties waar je de volgende query moet gebruiken:
code:
1
2
3
4
5
6
7
8
9
 SELECT X.naam, X.id
FROM gebruikers X
WHERE NOT EXISTS 
(
  SELECT *
  FROM gebruikers Y
  WHERE X.naam = Y.naam
     AND Y.id < X.id
)

Let op: dit gaat heeeeeel veel tijd kosten bij veel records! quadratisch algoritme, lijkt me

edit:
Na het lezen van wat reacties van jouw, lijkt het me dat je voor de tweede optie moet gaan. Of je moet natuurlijk je databasemodel op orde gaan brengen (tabel voor gebruikers, en een tabel voor inlogpogingen/aankopen/whatever). Dit voldoet nog niet eens aan de 0e normaalvorm volgens mij, vandaar dat de query lekker vaag moet zijn. Ga eens een goed boek over databaseontwerp lezen!

[ Voor 39% gewijzigd door MBV op 31-05-2004 21:39 . Reden: group by voorbeeld toegevoegd ]


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

VB_programmer schreef op 31 mei 2004 @ 21:34:
Aardig wat: Adres, Postcode, woonplaats, Telefoonnummer.
Maar erhm.. Meerdere items met dezelfde gegevens; ruikt dit niet een beetje naar een foutief datamodel?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • user109731
  • Registratie: Maart 2004
  • Niet online
Ooh ja, de andere velden zijn ook gelijk. Misgien hebbe jullie hier wat aan?

  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
MBV schreef op 31 mei 2004 @ 21:35:
waarom gebruik je niet een 'group by' statement?
Omdat je een group by enkel gebruikt als je ook aggregaatsfuncties gebruikt.
En zoieso, waarom gebruik je geen genormaliseerde database? Als er 2 verschillende mensen 'jansen' heten, moet je toch onderscheid kunnen maken?
Mja, ik snap ook niet zo goed waar de TS naartoe wil. Hij zal toch wel ergens een PK op die tabel liggen hebben.

gorgi_19 :(, je hebt me weer genuked.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
VB_programmer schreef op 31 mei 2004 @ 21:36:
Ooh ja, de andere velden zijn ook gelijk. Misgien hebbe jullie hier wat aan?
Over de komplete row? Gebruik dan een distinct:
select distinct * from tabel

https://fgheysels.github.io/


  • user109731
  • Registratie: Maart 2004
  • Niet online
Sorry jongens, ik gebruikte een voorbeeld, dat dus verkeerd was.

Ik heb een site met download-links naar programma's. Een programma kan in meerdere categorieen voorkomen, dan staat de naam er dubbel in, veld categorie is anders.
Als er gezocht word op naam, krijg ik er dus 2 en dat moet er dus 1 zijn!
Database opbouw had misgien anders gemoeten, maar dat is giga-klus.

Sorry, ik ben lastig, ik weet t!

  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
Je datamodel aanpassen is misschien een giga-klus, maar je doet het beter nu dan nooit. Je zult er later nog meer mee in de problemen komen.

https://fgheysels.github.io/


  • user109731
  • Registratie: Maart 2004
  • Niet online
whoami schreef op 31 mei 2004 @ 21:38:
[...]


Over de komplete row? Gebruik dan een distinct:
select distinct * from tabel
Ooh, ik zie t nu pas. Bedankt allemaal!

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

En mocht je het niet willen: Select Distinct veldnamen FROM tabelnaam ; Categorie zul je dan alleen niet mee moeten nemen in je selectielijst (en de rest is toch hetzelfde)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 31-12-2025

MBV

ok, dan moet je zeker mijn post nog maar eens lezen, heb hem nog wat geëdit enzo :). Ik had even iets beter na moeten denken voro ik hem de eerste keer neergooide. Zo'n lang verhaal typen gaat op dit tijdstip altijd een paar reacties scheef, maar vandaag is het wel heel erg!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Ja, idd. Ik ga t model maar aanpassen. Zal effe werk worden, maar ja.

Ik wil t nu zo doen (dit had ik eerst ook): elke categorie een eigen tabel. Toen had ik dit probleem:
Hoe kan ik al de namen van de links alfabetisch weergeven, dus de namen uit alle tabellen onder elkaar plakken en dan ORDER BY gebruiken? Hoe doe ik dit?

Of moet ik hiervoor een nieuw. topic starten?

BVD
Nog bedankt allemaal!

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Hoe kan ik al de namen van de links alfabetisch weergeven
ORDER BY kolomnaam

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • user109731
  • Registratie: Maart 2004
  • Niet online
Ja, ok. maar dan kan ik met SELECT * FROM ... maar 1 tabel kiezen of niet? Ik wil alle tabellen samen sorteren.

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

VB_programmer schreef op 31 mei 2004 @ 21:47:
Ja, ok. maar dan kan ik met SELECT * FROM ... maar 1 tabel kiezen of niet? Ik wil alle tabellen samen sorteren.
Erhm... Joins? :? Gekke opmerking, maar kijk eens in de PW-FAQ in het gedeelte over SQL; daar staat eea geschreven en wat links naar tutorials, want ik krijg een beetje een klok-klepel gevoel. :)

[ Voor 28% gewijzigd door gorgi_19 op 31-05-2004 21:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • user109731
  • Registratie: Maart 2004
  • Niet online
Ik dagt dat je met joins alleen kolommen naast elkaar kon plakken uit verschillende tabellen? kan je dus ook rijen onder elkaar plakken uit verschillende tabellen?
Ik ga ernaar kijken.

Bedankt!

  • whoami
  • Registratie: December 2000
  • Laatst online: 03:23
SQL tutorial
VB_programmer schreef op 31 mei 2004 @ 21:48:
Ik dagt dat je met joins alleen kolommen naast elkaar kon plakken uit verschillende tabellen? kan je dus ook rijen onder elkaar plakken uit verschillende tabellen?
Ik ga ernaar kijken.

Bedankt!
Nee, dat kan je niet met JOINS, wel met UNION, maar dan moet je toch aan bepaalde voorwaarden voldoen (evenveel kolommen, zelfde data-types, etc...)

[ Voor 89% gewijzigd door whoami op 31-05-2004 21:49 ]

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

VB_programmer schreef op 31 mei 2004 @ 21:48:
Ik dagt dat je met joins alleen kolommen naast elkaar kon plakken uit verschillende tabellen? kan je dus ook rijen onder elkaar plakken uit verschillende tabellen?
Ik ga ernaar kijken.

Bedankt!
Rijen onder elkaar plakken? :? Bedoel je dan een UNION - statement? Maar in de meeste gevallen duidt dit ook op een verkeerd datamodel.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • user109731
  • Registratie: Maart 2004
  • Niet online
OK. Ik ga de SQL-Faq lezen.
Bedankt allemaal, kzal jullie niet meer lastig vallen met verkeerd opgebouwde databases!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Ja, tabellen zijn allemaal hetzelfde. (behalve de gegevens natuurlijk, maar ik bedoel de opbouw)

Nog een keer bedankt. Hier wordt wel lekker snel gereageerd!

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
ga eens iets lezen over database normalisatie...

voorbeeld linkje :

http://www.yapf.net/faq.php?cmd=100&itemid=700#15

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...

Pagina: 1