Toon posts:

[VB SQL] Join on meerdere tabellen

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

Verwijderd

Topicstarter
Ik probeer met SQL in VB meerdere (3) tabellen aan elkaar te koppelen en de resultaten daarvan weg te schrijven naar een nieuwe tabel.

Het lukt mij om twee tabellen te koppelen, dat ziet er als volgt uit:

code:
1
2
3
4
5
6
7
8
Function Werkt()
    Dim dbs As Database
    Set dbs = CurrentDb
    dbs.Execute ("SELECT tblOrder.*, tblQuantities.* " _
        & "INTO Dataset FROM tblOrder " _
        & "INNER JOIN tblQuantities ON " _
        & "tblOrder.[Order number] = tblQuantities.[Order number] ")
End Function


Maar zodra ik een derde tabel toevoeg maak ik ergens een fout, het lukt me echter niet om erachter te komen waar de fout zit. In het onderstaande testje probeer ik het INNER JOIN commando te herhalen, maar dit werkt niet. Ook zonder dit commando werkt het niet.

code:
1
2
3
4
5
6
7
8
9
10
Function WerktNiet()
Dim dbs As Database
    Set dbs = CurrentDb
    dbs.Execute ("SELECT tblOrder.*, tblQuantities.*, tblAggregateFreight.* " _
        & "INTO Dataset FROM tblOrder " _
        & "INNER JOIN tblQuantities ON " _
        & "tblOrder.[Order number] = tblQuantities.[Order number], " _
        & "INNER JOIN tblAggregateFreight ON " _
        & "tblOrder.[Order number] = tblAggregateFreight.[Order number]")
End Function


Hoe voeg ik succesvol de derde tabel toe aan mijn query?

@SPee: de 'AND' hoort er inderdaad niet te staan, ben wat aan het proberen maar ben er nog niet uit.

[ Voor 17% gewijzigd door Verwijderd op 30-07-2003 16:35 ]


  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 15:50
[del]bij die eerste inner join ook de tabellen aangeven die gelijk zijn[/del]

Bij de tweede inner join na ON, niet beginnen met een AND, maar eerst aangeven welke tabellen hij moet joinen. :)

let the past be the past.


Verwijderd

Topicstarter
Help iemand :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Heb je dan een glazen bol met de foutmelding die je krijgt?
Mijn applicatie werkt op dit moment ook niet; kan je me vertellen wat er mis mee is?

Verder hoef je niet te schoppen binnen 24 uur.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
He ja leuk gorgi_19, laten we gaan katten, altijd goed voor de sfeer op een forum. Als je nou nog een moderator was :O ....

Er staat toch precies de code die ik gebruik, iemand met ervaring ziet gelijk waar de fout zit. Voor de volledigheid de foutmelding die ik krijg is: Syntax error in FROM clause.

  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Probeer de query anders eens in Ms Access

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Verwijderd schreef op 30 July 2003 @ 17:07:

Er staat toch precies de code die ik gebruik, iemand met ervaring ziet gelijk waar de fout zit. Voor de volledigheid de foutmelding die ik krijg is: Syntax error in FROM clause.
LOL

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


Verwijderd

Topicstarter
Heb ik gedaan, zo ben ik namelijk op het idee gekomen voor een tweede 'INNER JOIN'. De syntax in MS Access is echter niet hetzelfde als in VBA met DAO. Dat is op zich niet zo erg want ik weet aardig hoe het hoort zonder "te spieken" in Access, alleen die verrekte derde tabel toevoegen lukt maar niet.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 30 July 2003 @ 17:07:
He ja leuk gorgi_19, laten we gaan katten, altijd goed voor de sfeer op een forum. Als je nou nog een moderator was :O ....
Blijft ook altijd leuk op een forum, een aantal posts bezig zijn om er achter de benodigde relevante informatie te komen. Lijkt me niet zo gek om ook de foutmelding er bij te geven; dit staat toch immers duidelijk vermeld in de FAQ?
Er staat toch precies de code die ik gebruik, iemand met ervaring ziet gelijk waar de fout zit. Voor de volledigheid de foutmelding die ik krijg is: Syntax error in FROM clause.
Hierbij promoot ik mezelf dan dat ik geen ervaring heb; veel plezier met debuggen.
Hint: MS Access heeft een query builder, welke erg goed queries kan maken.
Hint2: Vergeet het VB gedeelte; print de query op je scherm en laat het VB er omheen weg; is niet relevant voor het probleem.

[ Voor 8% gewijzigd door gorgi_19 op 30-07-2003 17:17 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Verwijderd schreef op 30 juli 2003 @ 17:13:
Heb ik gedaan, zo ben ik namelijk op het idee gekomen voor een tweede 'INNER JOIN'. De syntax in MS Access is echter niet hetzelfde als in VBA met DAO. Dat is op zich niet zo erg want ik weet aardig hoe het hoort zonder "te spieken" in Access, alleen die verrekte derde tabel toevoegen lukt maar niet.
Toch wel hoor, je kan een query uit Access zo gebruiken in VB met dao.

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


  • JohanDM
  • Registratie: Augustus 2002
  • Laatst online: 16-07-2021

JohanDM

Optimist

Er staat én een , én INNER JOIN in het FROM gedeelte en dat kan niet.
Kijk achteraan maar op de 4e lijn van je SQL statement.
Dat moet worden:
Visual Basic:
1
2
3
4
5
6
dbs.Execute ("SELECT tblOrder.*, tblQuantities.*, tblAggregateFreight.* " _
        & "INTO Dataset FROM tblOrder " _
        & "INNER JOIN tblQuantities ON " _
        & "tblOrder.[Order number] = tblQuantities.[Order number] " _
        & "INNER JOIN tblAggregateFreight ON " _
        & "tblOrder.[Order number] = tblAggregateFreight.[Order number]")

"Two things are infinite: the universe and stupidity. And the former I'm not so sure about." -- Albert Einstein


Verwijderd

Topicstarter
Werkende oplossing:

code:
1
2
3
4
5
6
7
8
9
10
Function Solution()
    Dim dbs As Database
    Set dbs = CurrentDb
    dbs.Execute ("SELECT tblAggregateFreight.*, tblOrder.*, tblQuantities.* " _
    & "INTO Dataset FROM (tblAggregateFreight " _
    & "INNER JOIN tblOrder ON " _
    & "tblAggregateFreight.[Order number] = tblOrder.[Order Number]) " _
    & "INNER JOIN tblQuantities ON " _
    & "tblOrder.[Order Number] = tblQuantities.[Order Number]")
End Function


Door de drag and drop SQL van Access naast mijn eigen brouwsel te houden erachter gekomen dat de fout zit in een simpel "(" op een strategische plaats :). De FROM met de eerste INNER JOIN moet schijnbaar tussen haakjes staan, de tweede INNER JOIN kan er dan gewoon achteraan. De komma van JohanDM hoort er inderdaad ook niet te staan.

Met de query builder altijd maar queries maken vind ik niks, ik wil weten wat er aan de achterkant gebeurt. Nadeel, je komt wel eens vast te zitten op een kleinigheidje!

[ Voor 9% gewijzigd door Verwijderd op 30-07-2003 17:47 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 30 July 2003 @ 17:07:
He ja leuk gorgi_19, laten we gaan katten, altijd goed voor de sfeer op een forum. Als je nou nog een moderator was :O ....
Dan zal ik wel even als je dat gelukkig maakt, want hij heeft gewoon 100% gelijk en je mag wel wat meer respect tonen voor de regulars op het forum daar zij degenen zijn waar jij voor de oplossing van jouw probleem van afhankelijk bent. Bij deze dus uit mijn pen ondanks dat het al opgelost is:

Heb je dan een glazen bol met de foutmelding die je krijgt?
Mijn applicatie werkt op dit moment ook niet; kan je me vertellen wat er mis mee is?

Verder hoef je niet te schoppen binnen 24 uur.

Professionele website nodig?


  • intGod
  • Registratie: Maart 2003
  • Niet online

intGod

Ars non postulat causam

Als je zo graag weet wat er aan de achterkant gebeurt zou ik even opzoeken wat het resultaat is van die drie asterisken die je gebruikt. Het afkatten van mensen die je proberen te helpen vind ik niet bevorderlijk.

Verder had je die fout makkelijk kunnen vinden als je even een debug.print had gedaan van dat sql statement.

En die haakjes heb je helemaal niet nodig met inner joins. Als je alle tabellen inner join't maakt het op zich niet uit in welke volgorde je ze inner join't als je voorwaardes maar kloppen. Dat is langs alle kanten logisch, denk er maar eens over na. Het feit dat access er wel haakjes rond zet is omdat Access er geen idee van heeft wat SQL is. De SQL die Access uitschijt is echt bagger.

Als je dus gewoon de komma van DM had gebruikt dan had het al gewerkt.

Verwijderd

Topicstarter
De SQL van Access mag dan wel bagger zijn, maar het werkt wel. Zodra ik de haakjes rond de eerste INNER JOIN weghaal krijg ik de volgende foutmelding:

"Syntax error in query expression tblOrder.[Order Number] = tblAggregateFreight.[Order number] INNER JOIN tblQuantities ON tblAggregateFreight.[Order number] = tblQuantities.[Order Number]")"

Deze SQL werkt dus niet:

code:
1
2
3
4
("SELECT tblOrder.*, tblAggregateFreight.*, tblQuantities.* " _
& "INTO dataset FROM tblOrder INNER JOIN tblAggregateFreight " _
& "ON tblOrder.[Order Number] = tblAggregateFreight.[Order number] " _
& "INNER JOIN tblQuantities ON tblAggregateFreight.[Order number] = tblQuantities.[Order Number]")


offtopic
En wat betreft het afkatten van de "vaste gasten", dat heb ik helemaal niet gedaan, ik ben degene die afgekat werd :(. Ik ben ook harstikke dankbaar als ik geholpen word, want niets frustrerender dan een probleem waar je niet uitkomt. Zodoende ook de stiekeme kick na een half uur (OK, ik beken schuld })).
En het tonen van respect moet nog altijd van twee kanten komen en ik kan mij er bijzonder aan storen als er mensen zijn (en het zijn dan altijd de "vaste gasten") die dat even vergeten. Ik stel een hele normale goed gespecificeerde vraag, maar Gorgi_19 is volgens mij pas tevreden als je van posten op een forum een "exact science" maakt. Doe toch normaal mensen en neem jezelf niet al te serieus!
/offtopic

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

En wat betreft het afkatten van de "vaste gasten", dat heb ik helemaal niet gedaan, ik ben degene die afgekat werd :(. Ik ben ook harstikke dankbaar als ik geholpen word, want niets frustrerender dan een probleem waar je niet uitkomt. Zodoende ook de stiekeme kick na een half uur (OK, ik beken schuld })).
En het tonen van respect moet nog altijd van twee kanten komen en ik kan mij er bijzonder aan storen als er mensen zijn (en het zijn dan altijd de "vaste gasten") die dat even vergeten. Ik stel een hele normale goed gespecificeerde vraag, maar Gorgi_19 is volgens mij pas tevreden als je van posten op een forum een "exact science" maakt. Doe toch normaal mensen en neem jezelf niet al te serieus!
/offtopic
Noem je dat afkatten? Dan ben je dus nog echt niets gewend, maar goed, daar kom je nog wel achter (en ik heb het niet alleen over dit forum)

En van posten een exact science maken? Nope. (gaat ff voor zichzelf nu spreken).
Ik heb er alleen geen zin in om eerst 10 posts bezig te zijn om er achter alle relevante informatie te komen. D'r staat bij wijze van spreken in koeieletters geschreven wat er nodig is. Niets exacte wetenschap, begrijpend lezen van de quickstart. Jouw vraag is dus niet goed gespecificeerd!!!. Maar goed; wie leest een quickstart nu? Gemaakt waarschijnlijk door een mod met te veel tijd...

En verder niet: Ik hoef niet zo nodig te helpen. Jij hebt een probleem, niet ik. Jij wilt het graag opgelost hebben, niet ik. Om heel eerlijk te zijn zal het me eigenlijk een zorg zijn of het probleem wordt opgelost of niet; ik heb het probleem namelijk niet; ik ben geen eigenaar van het probleem.
Los je het niet op, dan wordt het niet opgelost. Simpel.
Jij moet dus de extra moeite er in stoppen. Ik wil in principe alleen helpen op de punten waar de topicstarter te weinig kennis voor heeft. En daar valt standaard debugwerk imho niet onder.

Maar goed, als je klachten over mij hebt: wees uitgenodigd om een mailtje te sturen naar glimi(at)tweakers.net of janoz(at)tweakers.net. SM'etje plaatsen kan ook.

[ Voor 24% gewijzigd door gorgi_19 op 31-07-2003 10:18 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

heren, we snappen het zo wel :) rEPLICa0 gaat de volgende keer nettere openingsposts verzorgen zodat we 'm sneller kunnen helpen en daarna is iedereen happy. don't make me close this baby ;)

Professionele website nodig?


Verwijderd

Topicstarter
Hier heb ik niets aan toe te voegen, 'nuff said! :)

Waar ik wel iets aan toe te voegen heb is de input van intGod. Quote: "En die haakjes heb je helemaal niet nodig met inner joins. " Echt wel, zonder haakjes geen nieuwe tabel!
Pagina: 1