Query samenvoegen

Status
Niet open voor verdere reacties.

marka

Gebruiker
Lid geworden
14 jul 2009
Berichten
333
Hallo,

k zit met een probleem. Ik wil 2 queries samenvoegen en heb diverse dingen gelezen en geprobeerd, maar ik kom er niet uit.

]
Code:
SELECT Sum([Helden])*-1 AS [Omzet Helden], (Sum([Helden])-Sum([Helden_V]))*-1 AS [Omzet Maand]
FROM Kolommenbalans_Huidig INNER JOIN Kolommenbalansvorig ON Kolommenbalans_Huidig.Rekening = Kolommenbalansvorig.Rekening_V
WHERE (((Kolommenbalans_Huidig.Rekening)>=80000 And (Kolommenbalans_Huidig.Rekening)<90000));

Code:
SELECT Sum([Helden]) AS [Helden Investeringen], (Sum([Helden])-Sum([Helden_V])) AS [Investeringen Helden Maand]
FROM Kolommenbalans_Huidig INNER JOIN Kolommenbalansvorig ON Kolommenbalans_Huidig.Rekening = Kolommenbalansvorig.Rekening_V
WHERE (((Kolommenbalans_Huidig.Rekening)>=0 And (Kolommenbalans_Huidig.Rekening)<=400));

Doel is om dit als 1 overzicht te kunnen draaien en er 1 rapport van kunnen maken met omzet, investeringen (maar er zijn nog meer queries met debiteuren, crediteuren etc.)
 
heb diverse dingen gelezen en geprobeerd, maar ik kom er niet uit

Misschien handig om wat meer informatie te geven van wat je al gelezen en geprobeerd hebt. Nu komen er mensen misschien met reactie's, die je al gelezen en/of geprobeerd hebt.

Heb je in de help al gekeken en gezocht op "Samenvoegquery"?
 
Ik heb nu een oplossing. Ik wil het gaan doen aan de hand van een toevoegquery. Nu is alleen mij vraag hoe je deze automatisch kan laten draaien. Nu moet ik wanneer ik gegevens wijzig de query handmatig laten draaien.
 
Toch maar een algemene tip:
Je kunt er met Union All een samenvoegquery van maken. Daarbij is het belangrijk dat je algemene veldnamen hebt voor dezelfde soort gegevens.
Dus <Sum([Helden])*-1 AS [Omzet Helden]> moet dan in dezelfde kolom terecht komen als <Sum([Helden]) AS [Helden Investeringen]>.
Zoals je kunt zien, gebruik je hiervoor 2 verschillende veldnamen. Dat is dus eigenlijk niet de bedoeling.
Wat je dan ook moet doen, is voor alle velden die je in de query terug wilt zien een zelfde veldnaam gebruiken, Bijvoorbeeld: <Sum([Helden])*-1 AS [Type Omzet]>.
In een lege kolom voeg je dan de omschrijving toe. Daar typ je dan: <Omschrijving:"Omzet Helden" voorde eerste query, en <Omschrijving:"Investeringen Helden". Bijvoorbeeld...
En dat de je uiteraard ook voor de andere berekening.

vervolgens kun je de code van de tweede query in de eerste query plakken, waarbij je de SELECT statement vervangt door
UNION ALL
SELECT

Dan heb je je samenvoegquery. Let wel op het ; teken uit de eerste query, die moet wel weg.

Michel
 
Dat is geen enkel probleem. Zolang de veldeigenschappen overeenkomen, maar dat is logisch; je kunt nu eenmaal geen tekstveld in een getalveld douwen.
Je kunt ook meerdere queries op die manier aan elkaar knopen.

Michel
 
Als ik overigens dezelfde veldnamen gebruik zegt het programma iets in de vorm van: Helden kan op 2 veldnamen slaan, daarom noem ik in 1 tabel de kolom "Helden" en in de andere "Helden_V".
 
Ik zou ook nog even uitleggen wat ik ongeveer wil.

Helden Hero (zijn bedrijven voor wie het interessant vindt ;)

Omzet
Kosten
Investeringen

Zoals ik het nu doe krijg ik echter in kolommen helden omzet, helden investeringen, hero omzet, hero investeringen etc.
 
Laatst bewerkt:
Iemand nog een oplossing hoe ik tot dat resultaat kan komen?
 
Misschien is het handig als je een voorbeeldje neerzet, dat kijkt wat makkelijker. Ik vermoed dat de melding die je krijgt wordt veroorzaakt doordat je dezelfde veldnaam twee keer gebruikt, en dat kan natuurlijk niet. Wat ik bedoelde was, dat je twee kolommen moet hebben voor je gegevens: één voor de berekening die je wilt maken (Sum(Helden) ) bijvoorbeeld, en een ander waarin je vastlegt wat het is.
Daarna kun je in de samengevoegde query de uitkomsten zien, en de bijbehorende bron van de berekenig (in de kolom omschrijving).

Michel
 
Ik moest even de getallen etc. vervangen het was informatie die niet zomaar op internet mag komen.

Bij deze even een uitgeklede versie van het bestand.

Bij tabellen staat een kolommenbalans van de huidge en de vorige maand.
Deze wordt in dit format geleverd.

De bedoeling is dat de kolommen in de kolommenbalans (Helden en Helden Belgie (er zijn nog meer bedrijven maar die heb ik even weggehaald) ook zo blijven staan en dat aan de linkerkant in een overzicht omzet, investeringen, kosten etc. worden geplaats. Of iets kosten of een investering etc. is, wordt bepaald aan de hand van het nummer in de kolommenbalans. Zie ook criteria bij de queries. Ik heb nu enkel voor van Helden de kosten en omzet gepakt en voor belgie enkel de omzet.

Het is bestand is te groot kan ik het mailen? Het is 2,8mb en een db bestand pakt die ook niet?
 
Tabellen leegmaken op een paar testdata na. Eventueel plaatjes indien aanwezig verwijderen. Daarna comprimeren en herstellen. En vervolgens zippen.

Alleen de tabellen, query's en formulieren die nodig zijn importeren in een lege database en vervolgens comprimeren en herstellen en zippen is ook een mogelijkheid.
 
Ik heb hem nu geplaatst op http://www.megaupload.com/?d=PPFEJP22

Ook een idee is om in een query alle omzetten (Helden, Belgie en in werkelijkheid nog 6 andere bedrijven) te zetten, in een andere query alle investeringen (Helden, Belgie) etc. Dit is misschien nog wel handiger voor mezelf ook. Er moeten echter wel weer berekeningen plaats kunnen vinden.
 
Ik werp er een blik op!

Michel
 
Ik ben nu even met iets bezig, wacht maar even anders is het zonde van je tijd!

Ik wil nu 2 queries van elkaar aftrekken. Hoe kan ik dat doen?

Ik heb nu zoiets waar omzetten en kostprijs de namen van de queries zijn en Helden1 de namen van de kolommen. Die zijn gelijk omdat het anders niet werkt in de samenvoegquery.

exp: ([Helden1].[Omzetten]-[Helden1].[Kostprijs])
 
Het makkelijkste is denk ik om de waarde die je er vanaf wilt trekken negatief te maken, dan kun je met Som alles gewoon optellen.

Michel
 
Is het mogelijk om deze 2 select statements van elkaar af te trekken.
Ik heb het met een query gebruikt en dat werkt, maar in een toevoegquery pakt hij dan vervolgens altijd 1 bepaalde waarde. Dus vraag is eigenlijk hoe trek ik beide van elkaar af?

[SQL]SELECT Sum(([Kolommenbalans].[Helden])*([Seizoenspatroon].[Cumulatief])*-1) AS Helden1, Sum(([Kolommenbalans].[Heijster])*([Seizoenspatroon].[Cumulatief])*-1) AS Heijster1, Sum(([Kolommenbalans].[Laar])*([Seizoenspatroon].[Cumulatief])*-1) AS Laar1, Sum(([Kolommenbalans].[Holding])*([Seizoenspatroon].[Cumulatief])*-1) AS Holding1, Sum(([Kolommenbalans].[Sportprijzen])*([Seizoenspatroon].[Cumulatief])*-1) AS Sportprijzen1, Sum(([Kolommenbalans].[Heijster])*([Seizoenspatroon].[Cumulatief])*-1) AS Lobeka1, Sum(([Kolommenbalans].[Hero])*([Seizoenspatroon].[Cumulatief])*-1) AS Hero1, Sum(([Kolommenbalans].[Onroerend goed])*([Seizoenspatroon].[Cumulatief])*-1) AS [Onroerend goed1], Sum(([Kolommenbalans].[Fast East])*([Seizoenspatroon].[Cumulatief])*-1) AS [Fast East1], Sum(([Kolommenbalans].[Pakhuis])*([Seizoenspatroon].[Cumulatief])*-1) AS Pakhuis1, Sum(([Kolommenbalans].[HeldenBelgië])*([Seizoenspatroon].[Cumulatief]*-1)) AS HeldenBelgië1, "Omzet cumulatief" AS Omschrijving
FROM Kolommenbalans, Seizoenspatroon
WHERE (((Kolommenbalans.Rekening)>=80000 And (Kolommenbalans.Rekening)<90000) AND ((Seizoenspatroon.Omschrijving)="Februari"))




SELECT Sum(([Kolommenbalans].[Helden])*([Seizoenspatroon].[Cumulatief])) AS Helden1, Sum(([Kolommenbalans].[Heijster])*([Seizoenspatroon].[Cumulatief])) AS Heijster1, Sum(([Kolommenbalans].[Laar])*([Seizoenspatroon].[Cumulatief])) AS Laar1, Sum(([Kolommenbalans].[Holding])*([Seizoenspatroon].[Cumulatief])) AS Holding1, Sum(([Kolommenbalans].[Sportprijzen])*([Seizoenspatroon].[Cumulatief])) AS Sportprijzen1, Sum(([Kolommenbalans].[Heijster])*([Seizoenspatroon].[Cumulatief])) AS Lobeka1, Sum(([Kolommenbalans].[Hero])*([Seizoenspatroon].[Cumulatief])) AS Hero1, Sum(([Kolommenbalans].[Onroerend goed])*([Seizoenspatroon].[Cumulatief])) AS [Onroerend goed1], Sum(([Kolommenbalans].[Fast East])*([Seizoenspatroon].[Cumulatief])) AS [Fast East1], Sum(([Kolommenbalans].[Pakhuis])*([Seizoenspatroon].[Cumulatief])) AS Pakhuis1, Sum(([Kolommenbalans].[HeldenBelgië])*([Seizoenspatroon].[Cumulatief])) AS HeldenBelgië1, "Kostprijs cum" AS Omschrijving
FROM Kolommenbalans, Seizoenspatroon
WHERE (((Kolommenbalans.Rekening)>=70000 And (Kolommenbalans.Rekening)<80000) AND ((Seizoenspatroon.Omschrijving)="Februari"))[/SQL]
 
Je zou het misschien kunnen oplossen met een tussenquery, door van de twee queries een Union All te maken in een nieuwe query. Vervolgens kun je daar weer een query overheen leggen met de knop Totalen, waar je dan de functie Som over gebruikt.

Michel
 
Een tussenquery werkt volgens mij niet, hij rekent de totalen dan niet goed uit. Union All heb ik al geprobeerd.
 
Ik zou er graag weer naar kijken, maar in de voorbeelddb die je eerder hebt neergezet, ontbreken tabellen of queries, dus het is lastig om te zien wat er nu echt uit moet komen. Kun je het voorbeeld bijwerken?

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan