Archief - [PROG][SQL] Meerdere SQL's combineren in één SQL

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Duffman-

Legacy Member
Beste,

ik zit met een probleem. Ik heb meerdere SQL's die elk een vak "datum" bevatten. Voor de rest staan de SQL's volledig los van elkaar. Nu is het de bedoeling dat we het resultaat van die verschillende query's, in één query kunnen gieten. Momenteel zitten we met het probleem dat wanneer we de query uitvoeren, dat sommige gegevens meerdere keren terugkomen. (logisch want een dag kan in één query meerdere acties bevatten.) Nu vroeg ik mij af ofdat we ervoor kunnen zorgen dat we elke actie maar één keer te zien krijgen, maar dat we alle informatie toch in onze query hebben. Ik weet dat het moeilijk te begrijpen is maar ik zou ni weten hoe ik het anders moet uitleggen.

Grtz,
Duffman-

PS: Later wordt er op deze query een rapport gebaseerd.

killgore

Legacy Member
onduidelijke post.

Je hebt alleen een doel gegeven, je database-structuur & huidige queries zijn al even noodzakelijke gegevens om jou te helpen.

Ik kan je alleszins al aanraden om te zoeken op join's en subqueries, maar zonder meer info kan ik geen concretere hulp aanbieden ;).

edit: en zelfs dat doel is niet duidelijk, je spreekt over dagen en acties, maar niet welke context. Is het een kalender, een prikklok systeem, ...?

Duffman-

Legacy Member
killgore zei:
onduidelijke post.

Je hebt alleen een doel gegeven, je database-structuur & huidige queries zijn al even noodzakelijke gegevens om jou te helpen.

Ik kan je alleszins al aanraden om te zoeken op join's en subqueries, maar zonder meer info kan ik geen concretere hulp aanbieden ;).

edit: en zelfs dat doel is niet duidelijk, je spreekt over dagen en acties, maar niet welke context. Is het een kalender, een prikklok systeem, ...?

Mja daarom juist tis binnen het bedrijf dus ze hebben niet zo graag dat die informatie naar buiten gaat. Ben momenteel inderdaad bezig met subformulieren maar ik zal een voorbeeld geven van wat ik wil bereiken.

De arbeiders kunnen meldingen ingeven via een PC die altijd draait. Op deze PC draait een formulier dat ze kunnen gebruiken om een melding weer te geven. Nu is het zo dat ze verschillende meldingen kunnen ingeven (idee om productie te verhogen, kritiek op het één of het ander). Nu elk type melding(Kritiek/ideeën/ongevallen/...) worden in verschillende tabellen bijgehouden. Nu willen we (dagelijks) een rapport opstellen van ALLE meldingen die gedaan zijn(zowel kritiek als ideeën als ... op éen blad). We willen dit rapport creëren op een query die alle meldingen bevat , maar we slagen er momenteel niet in om die query goed te maken. We hebben al met joins geprobeerd maar dan kregen we soms herhaling van bepaalde records. Dit is logisch want je kan bv. op één dag 2 kritiekmeldingen hebben (in de kritiektabel) en 5 meldingen met ideetjes(in de tabel van de ideeën). Dan ga je de gegevens die in de kritiektabel zitten, meerdere keren te zien krijgen omdat er maar 2 records in de kritiektabel zitten en 5 records in de ideeëntabel voor de betreffende datum.

Zo, ik hoop dat je nu al wat meer begrijpt van mijn probleem.

Grtz,
Duffman-

killgore

Legacy Member
"SELECT * FROM kritiek_tabel WHERE date=...
UNION
SELECT * FROM meldingen_tabel WHERE date=...
UNION
..."

:).

Maar imho is je db-structuur dan fout.

Wat beter was geweest was een algemene tabel Comments & een tabel CommentCategories imho :). Maar soit, ik ken de interne structuur niet, dus het kan zijn dat dat niet goed te doen is :).

Duffman-

Legacy Member
killgore zei:
"SELECT * FROM kritiek_tabel WHERE date=...
UNION
SELECT * FROM meldingen_tabel WHERE date=...
UNION
..."

:).

Maar imho is je db-structuur dan fout.

Wat beter was geweest was een algemene tabel Comments & een tabel CommentCategories imho :). Maar soit, ik ken de interne structuur niet, dus het kan zijn dat dat niet goed te doen is :).
Ja, ik zou het ook zo doen maar ik moet verder werken op een bestaande database. De persoon die de database 3/4 jaar geleden maakte heeft toen ook gezegd: "ocharme de persoon die aan deze spaghetticonstructie moet werken". En dat ben ik dus geworden. :)

AsinuS

Legacy Member
SELECT * FROM tblKritiek AS K
CROSS JOIN tblMeldingen as M
WHERE (K.datumkolom = 'nen datum' OR M.datumkolom = 'nen datum')

grtz

killgore

Legacy Member
AsinuS zei:
SELECT * FROM tblKritiek AS K
CROSS JOIN tblMeldingen as M
WHERE (K.datumkolom = 'nen datum' OR M.datumkolom = 'nen datum')

grtz

totaal niet.

Cross join van bv dit:

Tabel A: gegevens a1,a2
Tabel B: gegevens b1,b2

geeft als resultset (a1,b1),(a1,b2),(a2,b1),(a2,b2).

Timmos

Legacy Member
Moet ge gewoon geen DISTINCT toevoegen :unsure:

Enfin, post eerst uw databasestructuur want met enkel een textuele uitleg ben ik niet zo gebrand om naar een oplossing te zoeken :p

Timmos

Legacy Member
Als dat de oplossing is, ok dan :) Maar ik dacht uit zijn beginpost te verstaan dat sommige rijen uit zijn oplossing identiek waren, da's dus op te lossen met een simpele DISTINCT.

Duffman-

Legacy Member
Timmos zei:
Als dat de oplossing is, ok dan :) Maar ik dacht uit zijn beginpost te verstaan dat sommige rijen uit zijn oplossing identiek waren, da's dus op te lossen met een simpele DISTINCT.

Kijk hetgene wat ik dus wil bereiken is (in Access) een rapport met gegevens uit verschillende queries. Dit is lastig omdat je maar één rowsource kan ingeven :(

We kunnen uiteraard elke query één voor één naar excel exporteren(via vba) maar ik voel gewoon dat er een simpelere oplossing (binnen Access) moet zijn.

Grtz en alvast bedankt voor jullie reacties,
Duffman-

PS: ik wou dus eerst een query creëren die alle data bevatte, maar dit leek dus vrij moeilijk te doen. Is er een andere oplossing om een rapport te creëren gebaseerd op verschillende queries (met verschillende velden. Alleen de datumvelden komen overeen.)

killgore

Legacy Member
ik snap het niet hoor, als je gewone selects hebt doet die union normaal wat jij wilt.

En als je de velden een gelijkaardige naam moet geven doe je toch gewoon

veldnaam AS specifiekeNaam

overal?

(en als je 100% gelijke records wilt verwijderen die bv. bij zowel kritiek als gewone opmerkingen staan doe je UNION ALL ipv UNION).

Duffman-

Legacy Member
killgore zei:
ik snap het niet hoor, als je gewone selects hebt doet die union normaal wat jij wilt.

En als je de velden een gelijkaardige naam moet geven doe je toch gewoon

veldnaam AS specifiekeNaam

overal?

(en als je 100% gelijke records wilt verwijderen die bv. bij zowel kritiek als gewone opmerkingen staan doe je UNION ALL ipv UNION).

Ja, maar dan heb je een probleem met je velden. Er staan een aantal memo-velden in de database en die kunnen niet worden opgenomen in de union query. Hetzelfde krijg ik wanneer ik distinct wil gebruiken.

Grtz,
Duffman-
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan