Springen naar inhoud


- - - - -
DB .NET SOLVED

Dubbelingen Uitfilteren

.NET

  • Log in a.u.b. om te beantwoorden
Er zijn 2 reacties in dit onderwerp

#1 Puffeltje

Puffeltje

    Senior Developer

  • Leden
  • PipPipPip
  • 127 berichten
    Laatst bezocht 04 aug 2019 22:28
  • LocatieBeverwijk

Geplaatst op 28 november 2013 - 00:13

Op het ogenblik ben ik bezig om het Dijkstra algoritme (kortste pad tussen 2 nodes) toe te passen in mijn VB2010 applicatie. In de bestaande database (waar ik overigens niets aan kan veranderen qua opbouw) staan de nodes en de paden tussen deze nodes. Ook staat er in de database of een pad belegd is met een route.

Uit de database kan ik probleemloos de lijst halen met de nodenamen. Helaas bevat de database geen tabel waarin de (beschikbare vrije) paden met hun bijbehorende lengte uit te lezen zijn. Hiervoor heb ik een query geschreven welke gezien vanuit een node aangeeft welke andere nodes hij kan benaderen en welke padlengtes hier bij horen. In deze query zijn de volgende 'ongeldige' paden uitgefilterd:
  • paden welke vertrekken van de node en op diezelfde node weer uitkomen
  • paden welke vertrekken van de node en geen geldige lengte hebben (lengte gelijk aan 0)
  • paden welke reeds belegd zijn met een route.
De query geeft bijvoorbeeld de volgende lijst retour (gesorteerd op node, lengte):

NODE LENGTE
alkmaar   12
beverwijk    15
haarlem   20
haarlem   22
haarlem   23
lisse 7

Het Dijkstra algoritme kan makkelijk omgaan met 3 verschillende lengtes naar Haarlem maar ik wil het algoritme zo min mogelijk paden geven om te berekenen. Ik wil de huidige (grote complexe) query toepassen als een subquery waarbij de dubbele plaatsnamen er uitgefilterd worden maar ik heb geef flauw idee hoe ik dit zou kunnen doen. Van bovenstaand voorbeeld zou 'haarlem 22' en 'haarlem 23' moeten uitgefilterd worden en zou ik de volgende lijst over moeten houden:

NODE LENGTE
alkmaar   12
beverwijk    15
haarlem   20
lisse 7

#2 josk79

josk79

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 614 berichten
    Laatst bezocht 16 aug 2018 17:25

Geplaatst op 28 november 2013 - 00:41

Code:
Select node,min(lengte) from mytemptable group by node


Dat kun je als basis gebruiken voor je query.

#3 Puffeltje

Puffeltje

    Senior Developer

  • Leden
  • PipPipPip
  • 127 berichten
    Laatst bezocht 04 aug 2019 22:28
  • LocatieBeverwijk

Geplaatst op 28 november 2013 - 09:46

Bedankt, mijn query geeft nu de juiste gewenste lijst retour. Scheelt weer het nabewerken vanuit mijn vb-code.





Ook met taq DB .NET SOLVED, .NET voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[DB .NET SOLVED] Untitled 1

Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)