PDA

Bekijk Volledige Versie : Uitgebreide vraag m.b.t. een uitgebriede sql query



02/03/04, 12:15
Hallo daar,

Ik heb een vraag m.b.t het loslaten van een uitgebreide sql query op een
access database.

Ik heb in een tabel verschillende kolommen staan. In drie van deze kolommen
staan waardes waarbij ik een selectie wil maken uit deze waardes.

Als voorbeeld kolom1 heeft records met de volgende waardes: a, b, b, c, d,
e, f, f, f, g, h, i. Als ik een unieke selectie wil maken van de records in
deze kolom, gebruik ik select distinct kolom1 from tabelnaam met als
resultaat: a, b, c, d, e, f, g, h, i

Nu heeft kolom2 records met de volgende waardes: a, a, b, c, d, d, d, d, i,
j, k, l, l, m, m. Als ik een unieke selectie wil maken van de records in
deze kolom, gebruik ik select distinct kolom2 from tabelnaam met als
resultaat: a, b, c, d, i, j, k, l, m

Nu heeft kolom3 records met de volgende waardes: a, a, b, c, d, d, d, d, i,
j, k, l, l, m, m, o, o, o, p, p, r, s, s, t. Als ik een unieke selectie wil
maken van de records in deze kolom, gebruik ik select distinct kolom3 from
tabelnaam met als resultaat: a, b, c, d, i, j, k, l, m, o, p, r, s, t

Tot zover geen probleem, echter... Nu wil ik in EEN enkele query dezelfde
selectie maken met het voorbehoud dat als ik alle unieke records uit kolom 1
heb, er ook een unieke selectie uit kolom 2 gemaakt zou moeten worden
waarbij ook nog eens alle records welke ik al uniek heb uit kolom 1 uit het
resultaat van kolom 2 gefilterd worden en hetzelfde geldt voor kolom 3.

Mijn sql query zou kunnen zijn, select distinct kolom1, distinct kolom2,
distinct kolom3, from tabelnaam maar dan geeft mijn resultaat een
foutmelding.
Ik kan maar 1 keer een distinct gebruiken?

Mijn uiteindelijke resultaat wat ik zou willen zien is:

distinct kolom1 = a, b, c, d, e, f, g, h, i
distinct kolom2 = a, b, c, d, i, j, k, l, m
distinct kolom3 = a, b, c, d, i, j, k, l, m, o, p, r, s, t

distinct van alledrie van de bovenstaande resultaten zou dan zijn

weergave = a, b, c, d, e, f, g, h, i, j, k, l, m, o, p, r, s, t

Wie weet hoe ik dit kan bereiken in een sql query met een access database
als bron van alle data?

Hendrik Jan

Wimjan
02/03/04, 12:35
hjdebruyn@home.nl schreef:
> Hallo daar,
>
> Ik heb een vraag m.b.t het loslaten van een uitgebreide sql query op een
> access database.
>
Ja, behoorlijk uitgebreid zo te zien: gemultipost naar minstens drie
groepen. Da's niet zo netjes - op deze manier zullen mensen tijd besteden
aan een antwoord op je vraag, terwijl dat wellicht in een van de andere
groepen al gegeven is.

Lees vooral
<http://www.intuh.net/woordenlijst/#kruisposten>,
<http://www.intuh.net/woordenlijst/#multiposten> en
<http://users.pandora.be/jvaes/faq/faq3.html#CROSSPOST> eens. Bedankt.

> Wie weet hoe ik dit kan bereiken in een sql query met een access database
> als bron van alle data?
>
Sorry, ik heb geen inhoudelijk antwoord.

> Hendrik Jan


Groet,

Wimjan

nl.internet.www.ontwerp en nl.comp.programmeren toegevoegd. Followup-To
gezet naar nl.internet.www.server-side.

--
Telefoonboek voor e-mailadressen: <http://inventio.nl/metanamesearch/>
Website aanmelden bij ~25 zoekmachines: <http://inventio.nl/wjsubmit/>
Programmagids klassieke radiozenders: <http://inventio.nl/radionu/>
Hoe heet dat ook alweer? <http://www.omgekeerdwoordenboek.nl/>

Michiel de Roo
02/03/04, 13:15
hjdebruyn@home.nl wrote:
> Hallo daar,
>
[knip]
> Mijn sql query zou kunnen zijn, select distinct kolom1, distinct kolom2,
> distinct kolom3, from tabelnaam maar dan geeft mijn resultaat een
> foutmelding.
> Ik kan maar 1 keer een distinct gebruiken?

Ja, maar ook:

select distinct kolom1, kolom2, kolom3 from tabelnaam

Dit geeft alle unieke combinaties van kolom 1,2, en 3. Wellicht is dat wat
je wilde ?

--
Michiel de Roo.

Online concert agenda voor de stad Utrecht:
http://www.utrecht-live.nl

Rik van der Helm
09/03/04, 09:25
hjdebruyn@home.nl wrote:
> Mijn uiteindelijke resultaat wat ik zou willen zien is:
>
> distinct kolom1 = a, b, c, d, e, f, g, h, i
> distinct kolom2 = a, b, c, d, i, j, k, l, m
> distinct kolom3 = a, b, c, d, i, j, k, l, m, o, p, r, s, t
>
> distinct van alledrie van de bovenstaande resultaten zou dan zijn
>
> weergave = a, b, c, d, e, f, g, h, i, j, k, l, m, o, p, r, s, t
>
> Wie weet hoe ik dit kan bereiken in een sql query met een access database
> als bron van alle data?

Ik vrees dat je toch eerst de gegevens uit de drie kolommen in een
nieuwe (temporary ?) table bij elkaar moet brengen en vervolgens uit
deze (nieuwe) gegevens de unieke waardes moet halen.


--
http://www.rikvanderhelm.nl

rwin
13/03/04, 02:05
hjdebruyn@home.nl wrote:
> distinct kolom1 = a, b, c, d, e, f, g, h, i
> distinct kolom2 = a, b, c, d, i, j, k, l, m
> distinct kolom3 = a, b, c, d, i, j, k, l, m, o, p, r, s, t
>
> distinct van alledrie van de bovenstaande resultaten zou dan zijn
>
> weergave = a, b, c, d, e, f, g, h, i, j, k, l, m, o, p, r, s, t
>
> Wie weet hoe ik dit kan bereiken in een sql query met een access
> database als bron van alle data?

Ik zou denken aan een UNION van die verschillende queries.
Bij MySQL werkt dat in ieder geval wel, ik zou verwachten dat access ook
union moest snappen.

Bij mijn weten geeft een UNION van set a en set b alle resultaten die óf in
set a, óf in set b of in set a én set b zitten. Om jouw resultaat te
krijgen, zou je dus iets moeten doen als:

distinct kolom1 UNION (distinct kolom2 UNION distinct kolom3)

Wat zoiets zou zijn als:

a, b, c, d, e, f, g, h, i UNION (a, b, c, d, i, j, k, l, m UNION a, b, c, d,
i, j, k, l, m, o, p, r, s, t)
=
a, b, c, d, e, f, g, h, i UNION (a, b, c, d, i, j, k, l, m, o, p, r, s, t)
=
a, b, c, d, e, f, g, h, i, j, k, l, m, o, p, r, s, t

Ik hoop dat het klopt wat ik zeg en dat je er wat aan hebt.
Groeten,
Erwin