Hoe krijg ik alle data te zien van twee query's

Status
Niet open voor verdere reacties.

nieko

Gebruiker
Lid geworden
20 sep 2002
Berichten
114
Ik heb 2 query's waarbij soms debiteurnummers overeenkomen en soms niet.

Hoe kan ik ervoor zorgen dat in een nieuwe query ALLE rijen te zien zijn, dus zowel van query 1 en query 2.

Als het debiteurnummer wel overeenkomt dan moet het dus maar 1 rij zijn met de gegevens van de 2 query's

Groetjes
 
Open de query in ontwerpmodus.
Als je twee tabellen hebt, zul je ongetwijfeld een relatie tussen die tabellen gelegd, die is zichtbaar als een lijntje tussen de twee tabellen.
Klik nu met de rechtermuisknop op de relatie en kies eigenschappen.
Op het eigenschappen venster kun je de soort relatie aanpassen, de mogelijkheden staan daar duidelijk beschreven.
 
Dat klopt maar daar kun je alleen maar kiezen:
alles van de 1, alles van de ander of alles wat overeenkomt. Eigenlijk zoek ik naar de vierde optie

Geef mij alles van de twee query's samen zonder samenhang.

Maar als ik dit doe (dus geen relatie tussen de 2) dan krijg ik er honderdduizend omdat hij bij alle mogelijke combinaties een rij aanmaakt.
 
Zie bijlage in qry_Alles:

SELECT Debnr, Naam FROM Deb1 WHERE Deb1.Debnr in (SELECT Debnr FROM Deb2)
UNION
SELECT Debnr, Naam FROM Deb1 WHERE Deb1.Debnr NOT IN (SELECT Debnr FROM Deb2)
UNION
SELECT Debnr, Naam FROM Deb2 WHERE Deb2.Debnr NOT IN (SELECT Debnr FROM Deb1);

Select 1: Selecteer debiteuren die in beide tabellen voorkomen.
Select 2: Selecteer debiteuren uit tabel 1 die niet voorkomen in tabel 2.
Select 3: Selecteer debiteuren uit tabel 2 die niet voorkomen in tabel 1.

Ook heb ik van alle selecties een aparte query gemaakt.
 

Bijlagen

Hoi silkcom,

ik heb het volgende ervan gemaakt omdat query1 bekostigingsberekening heet
en query2 bekostigingsberekening output heet


SELECT Id-nummer, outputtotaal FROM Bekostigingsberekening output WHERE Bekostigingsberekening output.Id-nummer in (SELECT Id-nummer FROM Bekostigingsberekening)
UNION
SELECT Id-nummer, outputtotaal FROM Bekostigingsberekening output WHERE Bekostigingsberekening output.Id-nummer NOT IN (SELECT Id-nummer FROM Bekostigingsberekening)
UNION SELECT Id-nummer, inputtotaal FROM Bekostigingsberekening WHERE Bekostigingsberekening.Id-nummer NOT IN (SELECT Id-nummer FROM Bekostigingsberekening output);

Helaas krijg ik een syntaxerrorrrrrrrrr (zie bijlage)

Waar ligt dit aan??
:confused:
 

Bijlagen

Indien in de naam van een tabel of item een "-" teken voorkomt, dient de naam van de tabel of het item tussen vierkant haken "[]" te staan.

SELECT [Id-nummer], outputtotaal FROM Bekostigingsberekening output WHERE Bekostigingsberekening output.[Id-nummer] in (SELECT [Id-nummer] FROM Bekostigingsberekening)
UNION
SELECT [Id-nummer], outputtotaal FROM Bekostigingsberekening output WHERE Bekostigingsberekening output.[Id-nummer] NOT IN (SELECT [Id-nummer] FROM Bekostigingsberekening)
UNION SELECT [Id-nummer], inputtotaal FROM Bekostigingsberekening WHERE Bekostigingsberekening.[Id-nummer] NOT IN (SELECT [Id-nummer] FROM Bekostigingsberekening output);
 
Hoi Silkcom,

ik heb het veld id-nummer tussen [] gezet maar dan krijg ik toch nog een syntaxerrorr????

Weet jij wat de oorzaak kan zijn??

Groetjes
 

Bijlagen

Ook de naam van de tabel "Bekostigingsberekening output" moet tussen [] staan.

[Bekostigingsberekening output]
 
Even een aanvulling.

Geef tabel- en veldnamen een naam zonder spatie of min-teken. Doe je dat wel, dan dienen deze tussen vierkante haken [ ] geplaatst te worden. Standaard MsAccess.
Wil je toch een samengestelde naamgving gebruiken, dan verdient het voorkeur om de "underscore" _ te gebruiken. Het gebruik van de vierkante haken is dan niet verplicht.

Bekostigingsberekening_output, id_nummer.
 
Hoi Silkcom,

Volgens mij doet ie 't. De query is alleen megatraag.

Hij moet 23000 rijen samenvoegen, ik heb 'm na
een uur afgebroken.

Heb jij nog enige suggesties daaromtrent?
 
Plaats een index op de bedrijfscode en selecteer bij de selectie alleen de juiste velden. Bij de vergelijking is dit alleen de bedrijfscode.
Ik heb een test gedaan met 150.000 records en de resultaten komen binnen 2 seconden.
Comprimeer de database:

Extra -> Databasehulpprogramma's -> Database comprimeren en herstellen.

MsAccess is namelijk een ruimteverspiller. Bij het wijzigen van welk onderdeel dan ook of het opvragen van tijdelijke tabellen wordt de originele ruimte binnen de database niet schoongemaakt. Het gewijzigde onderdeel wordt een nieuwe ruimte toegewezen in de database. Door het comprimeren wordt deze ruimte weer vrijgegeven en opgeruimd. De database wordt niet alleen kleiner maar ook veel sneller. Dit moet regelmatig gebeuren.
 
Beste Silkcom,

Perfect.....het werkt!!!!

Ik heb geïndexeerd en de sqr gehangen aan tabellen i.p.v. aan de query's

Nogmaals helemaal top......hartstikke bedankt!!!:thumb:
 
Hoi Silkcom,

ik wil toch nog even terugkomen op de samenvoeg sql.

Hoe kan ik ervoor zorgen dat bedrag 2 ook in de sql komt?

Zie in de bijlage. Daar heb ik een voorbeeld gemaakt in excel hoe de sql er eigenlijk uit moet komen te zien.

Ik hoop dat je hier ook het antwoord op hebt.

(Ik heb de status maar even op onopgelost gezet omdat jouw voorbeelddatabase erop staat.)
 
Hoi Silkcom,


:( ik kom er niet uit. Het levert niet het gewenste resultaat.

Zou jij nog eens willen kijken??.

Ik heb even een voorbeelddb. gemaakt.

Het is de bedoeling dat er een vierde variant komt. Dus idnummers moeten voorkomen met input en outputbedrag in aparte kolommen als idnummer in 1 van de tabellen voorkomt.

Ik hoop dat je hieruit komt...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan