[ASP .NET/SQL]Meerdere tabbellen selecteren werkt niet

Pagina: 1
Acties:

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
Hallo, ik wil met ASP .NET een grafiek maken met meerdere series. Een serie bestaat dus gewoon uit een x (datum) en een y (bv. temperatuur) component. Nu staat deze informatie in een database, maar wel meerdere tabellen. Nu had ik eigenlijk verwacht dat het gewoon vrij eenvoudig zou zijn, net als in MS Access. Maar elke keer als ik een query maak die meerdere tabellen opneemt, crasht ms visual studio .net. In MSDE Maneger is dit ook het geval als ik de query wil uitvoeren... Alleen in access werkt het gewoon. Maar als ik een connectie maak met een access database in visual studio .net dan crasht hij alsnog.

Hier zijn enkele voorbeeld query's die dus niet werken:
code:
1
2
3
4
SELECT [beek_debav].[fictievedatum],
[beek_debav].[voorspeltermijn],[beek_debav].[t2m] 
FROM beek_debav 
WHERE [beek_debav].[voorspeltermijn] = '+12'


code:
1
2
3
4
5
6
7
8
SELECT debilt_hirlam11.fictievedatum, 
debilt_hirlam11.voorspeltermijn, 
debilt_hirlam11.t2m, debilt_hirlam22.fictievedatum
 AS fictievedatum2, debilt_hirlam22.voorspeltermijn
 AS voorspeltermijn2, debilt_hirlam22.t2m AS temp2 
FROM debilt_hirlam11 CROSS JOIN debilt_hirlam22 WHERE 
(debilt_hirlam11.voorspeltermijn = '+12') AND 
(debilt_hirlam22.voorspeltermijn = '+12')


De eerste is even snel gemaakt in MSDE Maneger, de tweede is gemaakt met de query builder in visual studio .net

Als ik deze query's uitvoer gaat mn pc gigantisch nadenken (cpu usage 100% en veel geheugen vreten) en daar stopt hij niet mee tot mijn geduld op is (en ik de programma's afsluit, dat is dus soms pas na 5 minuten)

Heeft iemand enig idee waar het aan kan liggen? Alvast bedankt :)

[ Voor 12% gewijzigd door DarkShadow op 14-04-2004 12:34 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Een CROSS JOIN is -als ik het me goed herinner- hetzelfde als een cartesiaans product:

aantal records in tabel1 x aantal records in tabel2 dus; en dat duurt idd lang. Een CROSS join wil je dan ook meestal niet...

Waarom die 1ste query zo lang duurt kan ik niet zeggen, te weinig info. Bekijk het execution plan van die query eens in query analyzer.

https://fgheysels.github.io/


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
hmm waar kan ik zo'n query analyzer vinden? Heb MSDE nog maar net draaiende, ben er nog niet ervaren mee...

  • AteZ
  • Registratie: Juni 2001
  • Laatst online: 01:20
kun je misschien in de database een SP of een index maken voor deze query, dat gaat vast beter.

probeer anders eens sql reporting van msoft. dat is misschien precies wat je wil.

sexy: use feather kinky:use entire chicken ...


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Crossjoin is niet het geen je nodig hebt. Op dit moment ben je elk record van de ene tabel aan het combineren met de ander. Heb je in beide tabellen bijvoorbeeld 1000 records, dan heeft het resultaat 1000000 records.

Daarnaast doet de naamgeving vermoeden dat je database ontwerp verre van ideaal is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
AteZ schreef op 14 april 2004 @ 12:35:
kun je misschien in de database een SP of een index maken voor deze query, dat gaat vast beter.

probeer anders eens sql reporting van msoft. dat is misschien precies wat je wil.
:?
een index maken ja, maar wat heeft een SP er mee te maken? Een stored procedure is niet noodzakelijk veel sneller dan een parametrized query.

Query Analyzer is een client-tool van SQL Server.

https://fgheysels.github.io/


  • AteZ
  • Registratie: Juni 2001
  • Laatst online: 01:20
whoami schreef op 14 april 2004 @ 12:37:
[...]


:?
een index maken ja, maar wat heeft een SP er mee te maken? Een stored procedure is niet noodzakelijk veel sneller dan een parametrized query.

Query Analyzer is een client-tool van SQL Server.
- sorry een SP heeft er idd niet mee te maken ;)

ik bedoelde een view!

sexy: use feather kinky:use entire chicken ...


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
Janoz schreef op 14 april 2004 @ 12:36:
Crossjoin is niet het geen je nodig hebt. Op dit moment ben je elk record van de ene tabel aan het combineren met de ander. Heb je in beide tabellen bijvoorbeeld 1000 records, dan heeft het resultaat 1000000 records.

Daarnaast doet de naamgeving vermoeden dat je database ontwerp verre van ideaal is.
hoezo niet ideaal? Ik kan wel alles in 1 tabel zetten, maar het probleem is dat ik voor een chart meerdere kolommen nodig heb. Dus dan zou ik met een query een kolom moeten kunnen splitsen in 2 kolommen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Hoe ziet jouw datamodel er uit ?

https://fgheysels.github.io/


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
zit die query analyzer dan ook in MSDE? (is toch geripte versie van sql server) en hoe kan ik hem aanroepen?

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
Ik heb informatie van meerdere weerstations, dat is opgedeeld in meerdere modellen (of waarneming). Die 2 dingen zijn terug te vinden in de naam van de tabel. Ik kan ook wel extra kolommen aanmaken en alles in een tabel zetten, maar dan heb ik dus maar 1 kolom voor bv de temperatuur van station de bilt, model hirlam11 en model hirlam22. Terwijl ik 2 kolommen nodig heb om die grafiek te tekenen...

Voor de rest is elke tabel gelijk aan opbouw, zoals datum, fictievedatum, reeks, voorspeltermijn, temperatuur, neerslag etc etc

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
hmmm wel erg apart, ik heb het net nog weer een keer getest:
code:
1
2
SELECT beek_debav.t2m as temp1, beek_hirlam11.t2m as temp2
FROM beek_debav, beek_hirlam11


Dit lijkt me toch vrij eenvoudig, maar het werkt simpelweg niet :? Direct cpu load 100%, en de computer supertraag...

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
DarkShadow schreef op 14 april 2004 @ 13:21:
hmmm wel erg apart, ik heb het net nog weer een keer getest:
code:
1
2
SELECT beek_debav.t2m as temp1, beek_hirlam11.t2m as temp2
FROM beek_debav, beek_hirlam11


Dit lijkt me toch vrij eenvoudig, maar het werkt simpelweg niet :? Direct cpu load 100%, en de computer supertraag...
Omdat je ook hier weer een cartesiaans product fabriceerd. Je joined je 2 tabellen namelijk niet.
Misschien een goed idee om eens een sql tutorial door te nemen? Daarnaast hebben we hier ook een edit-functie, maak daar aub gebruik van ipv 3 berichten onder elkaar te posten binnen de 10 minuten.
DarkShadow schreef op 14 april 2004 @ 13:17:
Ik heb informatie van meerdere weerstations, dat is opgedeeld in meerdere modellen (of waarneming). Die 2 dingen zijn terug te vinden in de naam van de tabel. Ik kan ook wel extra kolommen aanmaken en alles in een tabel zetten, maar dan heb ik dus maar 1 kolom voor bv de temperatuur van station de bilt, model hirlam11 en model hirlam22. Terwijl ik 2 kolommen nodig heb om die grafiek te tekenen...

Voor de rest is elke tabel gelijk aan opbouw, zoals datum, fictievedatum, reeks, voorspeltermijn, temperatuur, neerslag etc etc
Dit is echt wel bagger hoor. Wat als er een weerstation bijkomt? Dan moet je een nieuwe tabel bijmaken.
Je maakt beter een tabel aan met daarin alle weerstations, en dan een tabel met alle meetgegevens, die gelinkt is met die weerstations - tabel.

[ Voor 40% gewijzigd door whoami op 14-04-2004 13:25 ]

https://fgheysels.github.io/


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
hmm er komt nooit een weerstation bij... en wat is nou precies het voordeel van het linken van een tabel met alleen weerstations aan een tabel met de meetgegevens. Dan heb je toch ook weer een id ofzo nodig in de meetgegevens tabel die overeenkomt met een bepaald weerstation of denk ik nu krom?

zal ff de tutorial op www.w3schools.com doornemen, alhoewel ik dat al wel gedaan heb, in access werkt het bovenstaande toch wel gewoon zonder heel veel rekenwerk (of heel veel nieuwe records)?

edit ;) :
Ok ik snap het :), heb het net in access uitgevoerd, en zie nu hoe hij dat doet, dat wordt dan idd een beetje een lange kolom :)

[ Voor 13% gewijzigd door DarkShadow op 14-04-2004 13:36 ]


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
DarkShadow schreef op 14 april 2004 @ 13:33:
hmm er komt nooit een weerstation bij... en wat is nou precies het voordeel van het linken van een tabel met alleen weerstations aan een tabel met de meetgegevens. Dan heb je toch ook weer een id ofzo nodig in de meetgegevens tabel die overeenkomt met een bepaald weerstation of denk ik nu krom?
Het voordeel is, dat je datamodel dan genormaliseerd is. En dat betekent dat je bijvoorbeeld redundantie voorkomt. Verder zal in veel gevallen de performance beter worden.
En het is inderdaad nodig om de tabellen te linken en dat kan meestal het beste met een id.

Never underestimate the power of


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 00:03
cameodski schreef op 14 april 2004 @ 13:49:
[...]

Het voordeel is, dat je datamodel dan genormaliseerd is. En dat betekent dat je bijvoorbeeld redundantie voorkomt. Verder zal in veel gevallen de performance beter worden.
En het is inderdaad nodig om de tabellen te linken en dat kan meestal het beste met een id.
hmm hoe kan ik dan het beste mn huidige datamodel omzetten naar een nieuw datamodel? Kost dat erg veel tijd?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Euh, tja.... Je tabellen opnieuw aanmaken en je data in het nieuwe formaat importeren.
Het kost misschien nu wel wat werk, maar je bespaart jezelf er een hele hoop ellende mee.

https://fgheysels.github.io/


  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Nee, het kost zeker niet erg veel tijd.
Eventjes nieuwe tabellen aanmaken en daarna mbv een query de data op de goede manier erin zetten en vervolgens de oude tabellen verwijderen.
Uiteindelijk moet je natuurlijk ook nog wel je code aanpassen.

Tja, hoe moet je datamodel eruit gaan zien.
Je krijgt een tabel met weerstations en eentje met waarnemingen. En in de waarnemingen tabel heb je dan nog een weerstationid nodig.

Never underestimate the power of

Pagina: 1