Query met join naar 2 velden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SanderV

SanderV

15/04/2009 12:16:00
Quote Anchor link
Hallo,
Ik zal het probleem zo goed mogelijk progeren te omschrijven:
Ik heb een database met brilbestellingen. Iedere brilbestelling bevat oa een klantID: AdrId en 2 glazen. GloGlaIdR en GloGlaIdL. Deze velden bevatten unieke ID's welke in de tabel glass terug komen. In de tabel Glass heb ik dus een veld GlaID. Hier staan dus alle glazen in die ooit besteld zijn. Met de benodigde glas gegevens.
Nu wil ik een query bouwen waar ik een overzicht krijg van alle klanten (distinct) die ooit een glas hebben besteld. Echter krijg ik het met joinen niet voor elkaar dat ik zowel de linker als de rechter glazen pak. Dit is mijn query tot nu toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT DISTINCT
 
Address.AdrId as Klant_ID,
Address.AdrNumber as Klant_nummer,
Address.AdrFirstName as Klant_voornaam,
Address.AdrMiddleName as Klant_tussenvoegsel,
Address.AdrLastName as Klant_achternaam,
Address.AdrAddress as Klant_straat,
Address.AdrAddressNumber as Klant_huistnummer,
Address.AdrZipCode as Klant_postcode,
Address.AdrCity as Klant_woonplaats,
Address.AdrDeceased as Klant_overleden,
Address.AdrMailable as Klant_mailen,
GlassOrder.GloId as Glasorder_Id,
GlassOrder.GloAdrId as Glasorder_Klantid,
GlassOrder.GloGlaIdR as Glasorder_rechts,
GlassOrder.GloGlaIdL as Glasorder_links,
Glass.GlaId as Glas_ID,
Glass.GlaName as Glas_naam

FROM Address
INNER JOIN GlassOrder ON Address.AdrId = GlassOrder.GloAdrId
INNER JOIN Glass ON GlassOrder.GloGlaIdR = Glass.GlaId


Iemand enig idee hoe ik deze query kan aanpassen?
 
PHP hulp

PHP hulp

28/11/2024 04:22:14
 
Dennis Mertens

Dennis Mertens

15/04/2009 12:18:00
Quote Anchor link
Waarom gebruik je bij alles een AS?

Wat bedoel je metlinker en rechter glazen?
 
SanderV

SanderV

15/04/2009 12:23:00
Quote Anchor link
As gebruik ik omdat de query gebruikt gaat worden in een report editor.
Zodat de gebruiker zelf een xml kan maken, maar dan is het voor de gebruiker over het algemeen wel prettig om een logische nl naam te hebben voor in het rapport.

Een bril heeft twee glazen. Een linker en een rechter glas. (links is GloGlaIdL en rechts is GloGlaIdR) Beide glazen hebben een eigen unieke ID. Dit ID is het zelfde ID als het Glas ID in de tabel Glass. (hier staan dus alle glazen in die ooit verkocht zijn)

edit:
Ik heb nu het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT DISTINCT
 
Address.AdrId as Klant_ID,
Address.AdrNumber as Klant_nummer,
Address.AdrFirstName as Klant_voornaam,
Address.AdrMiddleName as Klant_tussenvoegsel,
Address.AdrLastName as Klant_achternaam,
Address.AdrAddress as Klant_straat,
Address.AdrAddressNumber as Klant_huistnummer,
Address.AdrZipCode as Klant_postcode,
Address.AdrCity as Klant_woonplaats,
Address.AdrDeceased as Klant_overleden,
Address.AdrMailable as Klant_mailen,
GlassOrder.GloId as Glasorder_Id,
GlassOrder.GloAdrId as Glasorder_Klantid,
GlassOrder.GloGlaIdR as Glasorder_rechts,
GlassOrder.GloGlaIdL as Glasorder_links,
Glass.GlaId as Glas_ID,
Glass.GlaName as Glas_naam

FROM Address
INNER JOIN GlassOrder ON Address.AdrId = GlassOrder.GloAdrId
INNER JOIN Glass ON GlassOrder.GloGlaIdR = Glass.GlaId OR Glass.GlaId = GlassOrder.GloGlaIdL


Echter wil ik nu een distinct op Address.AdrId. Dit zodat elke klant maar 1 keer wordt weergegeven ookal heeft de klant meerder glasorders (zowel links als rechts) Ziet iemand waarom mijn distinct nu niet werkt?
Gewijzigd op 01/01/1970 01:00:00 door SanderV
 
Frank -

Frank -

15/04/2009 17:32:00
Quote Anchor link
Dennis Mertens schreef op 15.04.2009 12:18:
Waarom gebruik je bij alles een AS?
Omdat dit een hele goede gewoon is bij een alias.

Quote:
Wat bedoel je metlinker en rechter glazen?
Bril, 2 glazen, eentje links en eentje rechts. Al heeft een duikbril maar 1 glaz...


DISTINCT gaat hier niet werken, wanneer 1 klant verschillende combinaties links-rechts heeft besteld, zal de klant meerdere keren worden genoemd. Wanneer jij alle klanten wilt hebben, moet je gewoon klanten opvragen die minimaal 1 bestelling hebben.

Ik zou eerst even m'n vraag bijstellen en dan een passende query gaan zoeken. Komt bij dat dode klanten niet van die beste klanten zijn, lijkt me handiger dat je die niet selecteert...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.