Toon posts:

[Acces/SQL] een zoek query uit 2 tabellen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben nu bezig met een acces studenten registratie programmatje. Het is de bedoeling dat elke student dus op de computer ingevoert wordt via Acces (en later worden hier ook de rapporten aan vast gekoppelt maar dat is voor later). Nu heb ik een aantal tabellen gemaakt enz dat is niet zo heel boeint. Ik heb 2 tabellen voor de studenten gebruikt. De ene tabel met actuele studenten en de andere tabel met oud studenten. Nu wil ik een zoek oopdracht kunnen maken die in bijde tabellen kijkt of die de gevraagde zoekopdracht kan vinden (dus zoeken zowel in de tabel studenten als in oud studenten). Ik heb elke student een studenten nummer gegeven dus daar zitten geen dubbele nummers in. Wat ik heb gedaan is ik heb een query geschreven die de 2 tabellen selecteerd en dan de belangrijkste gegevens er uit haalt (stu. num., achternaam, voornaam, middel naam (het is voor een engelse school en die werken met middle name dus vandaar middel naam)).
Alleen wat er nu gebeurt is dat die op de lege velden van de oud studenten zichzelf net zo vaak door kopieert tot de acutele studenten afgelopen is(stel ik heb 10 actuele leerlingen en 1 oud leerling krijg ik dus in de query 10 keer de oud leerling te zien).

Kan iemand mij hier mee helpen ?? heel graag want het zou mooi zijn als ik een overzicht kan maken en daar een zoekfunctie uit maakt(tenzij je andere ideeen hebt mag je daar ook mee komen). De oud studenten worden automatich als de zich heeft uitgeschreven van de ene tabel naar de andere tabel geknipt.

Alvast bedankt voor je hulp

Verwijderd

Verwijderd schreef op 03 februari 2004 @ 14:07:Wat ik heb gedaan is ik heb een query geschreven die de 2 tabellen selecteerd en dan de belangrijkste gegevens er uit haalt (stu. num., achternaam, voornaam, middel naam (het is voor een engelse school en die werken met middle name dus vandaar middel naam)).
Kun je jou query misschien er ook bij posten

  • LouisXV
  • Registratie: November 2003
  • Niet online
Als ik het goed heb wil je dus een zoekopdracht uitvoeren op twee tabellen en het resultaat in een tabel laten zien?

In dat geval kan je een union gebruiken:

select snr, etc from studenten where blablabla
UNION
select snr, etc from oudestudenten where blablabla;

Gewoon dus twee queries waar union tussen staat. Op deze manier worden simpelweg de resultaten van twee aparte queries aan elkaar geplakt in een enkele tabel.

Je moet er dan wel op letten dat je dezelfde velden moet selecteren in beide tabellen.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:18

Dido

heforshe

Ik zou eens beginnen met alles weer in 1 tabel te gooien, met een veld Status of zo, om aan te geven of ze actueel of oudstudent zijn... Dan is je probleem opgelost, en je datamodel beter genormaliseerd :)

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Dido schreef op 03 februari 2004 @ 14:38:
Ik zou eens beginnen met alles weer in 1 tabel te gooien, met een veld Status of zo, om aan te geven of ze actueel of oudstudent zijn... Dan is je probleem opgelost, en je datamodel beter genormaliseerd :)
Is dit slimmer?? Want het kan natuurlijk wel dat ik dan gebruik maak van een query die uitleest of de status actief of non-actief is... en dat ik daar een rapport uit maak. Het scheelt zeker ook een hoop ruimte ?? Maar waar ik alleen mee zit is dat ik heb nog 3 andere formulieren (mdeische informatie, school achtergrond en basisschool informatie) Daar moet degene die het formulier invult (de secretaresse) het studenten nummer invoeren. Waar ik dus mee zit is dat als ik alle oudstudenten in de lijst laat staan dat ik een hele lange lijst krijg met de studenten (zowel oud als nieuw) en dat wil ik voorkomen. Is daar een makkelijke oplossing voor?? of is het zelfs mogelijk dat het studenten nummer in het 1e formulier direct wordt meegenomen naar het 2e formulier (zou naturlijk het mooiste ook zijn voor de secretaresse).

Ik heb op dit moment niet direct mijn huidige SQL code bij de hand want die staat op een andere computer. Maar als ik de mogelijkheid heb om op internet te komen op me andere computer zal ik de code er bij zetten. Ik zal het trukje van UNION ook proberen. Heb ik namelijk nog niet geprobeert.

Bedankt voor je hulp tot nu toe :)

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:18

Dido

heforshe

Je hoeft helemaal geen lange lijst te krijgen, hoor.

Als je iemand alleen een actief studentennummer op wilt laten zoeken, dan hoef je alleen maar een WHERE status="actief" toe te voegen aan de query die je nu voor je lijst gebruikt.

Dat kun je in acces heel makkelijk toevoegen.

Het grote voordeel is niet eens zozeer ruimtebesparing, als wel dat je data model veel overzichtelijker wordt. Meestal is een direct gevolg daarvan dat je minder snel tegen problemen met queries aanloopt.

Het probleem uit je topicstart is er al een die "automatisch" opgelost is op die manier.

Verder kun je gegevens vanuit een formulier natuurlijk automatisch "meenemen" naar je andere formulier, dat is zelfs een vrij basic iets. Maar daarvoor zul je wel een gedegen basiskennis van acces en eventueel VBA nodig hebben.

[ Voor 17% gewijzigd door Dido op 03-02-2004 18:39 ]

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Ja ik zat er net aan te denken dat je helemaal niet zo een hele lange lijst hoeft te hebben voor die studenten nummers(bedacht ik toen ik al op verstuur heb gedrukt)

Alleen dat automatisch meenemen dat lukt me niet. Ik heb wel degelijk een beetje basiskennis alleen mijn VB is niet zo heel goed. Nog een keer als ik de mogelijkheid krijg zal ik kijken hoe ik mijn studenten nummer op dit moment meeneem. Maar in ieder geval heel erg bedankt voor de tips. Ik kan morgenochten weer gaan werken (tis bij mij nu 2 uur 'smiddags zit op Aruba namelijk) misschien dat ik morgen ook ff de kabels omleg zodat ik ff op het internet kan(ja ik weet het, het klinkt triest maar vrijdag krijgen we een nieuwe switch uit amerika) als ik dan op het internet zit zal ik ff het 1 en ander posten. Het probleem waar ik mee ben gestart is in ieder geval opgelost... Dank je wel voor je hulp _/-\o_ _/-\o_

Groeten

  • Rody
  • Registratie: Juni 2000
  • Laatst online: 01-08 10:13
Ik zou gewoon een join gebruiken, leuk where statement er bij en je bent klaar.

maar dit is toch gewoon super basic :?

[ Voor 60% gewijzigd door Rody op 03-02-2004 19:35 ]


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11:18

Dido

heforshe

Rody: jij hebt kennelijk de startpost niet gelezen: het ging over twee tabellen met gelijkesoortige informatie, waar je dus een union voor gebruikt. Maar dat is opgelost nu.

Wat betekent mijn avatar?

Pagina: 1