Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Access 2007] Query vraag - klant/medewerkersnaam opvragen

Pagina: 1
Acties:

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-11 16:24

dj_vibri

int(e^x) = f(u)^n

Topicstarter
Allen,

ik ben een 'draft' versie aan het maken voor een website waar o.a. mogelijkheid inzit voor reservatie's te doen. De draft versie voor deze DB maak ik eerst in Access en nadien pas in MySQL (misschien handig om weten voor eventuele oplossingen te vergemakkelijken).

Ik heb drie tabellen: Users, Employees en reservations. In de users-tabel zitten zowel 'klanten' als 'medewerkers' (veld: permission). De Employees tabel bevat een relatie naar de 'users.ID' . De reservations tabel maakt gebruik van deze twee tabellen om enerzijds de UID op te slaan van de 'klant' die een reservatie maakt, en anderzijds de EID (Id van employees) om op te slaan bij welke medewerker de klant een reservatie maakt.

Nu was ik aan het proberen om een query te maken met als doel: Geef mij alle klantnamen die een reservatie gedaan hebben met hun bijhorende 'medewerker' naam.

Op zich niet zo moeilijk zou ik denken maar ik geraak er niet uit.

Wanneer ik volgende query laat lopen:

code:
1
2
3
4
5
6
7
SELECT TblUsers.Username
FROM TblUsers 
   INNER JOIN (TblEmployees 
        INNER JOIN TblReservations 
        ON TblEmployees.ID = TblReservations.EID) 
   ON (TblUsers.ID = TblReservations.UID) 
   AND (TblUsers.ID = TblEmployees.UID);


Om de Username weer te geven krijg ik geen enkel resultaat terug. Haal ik uit de query designer de relatie tussen Employees en Users weg, krijg ik de klantnaam te zien wie gereserveerd heeft.... (de AND clausule wordt dus weg gehaald)...

Maar ik veronderstel dat deze relatie moet blijven (iets met integriteit e.d. ?) .... Maar zelfs als ik de relatie weglaat, hoe krijg ik alsnog de Username van de 'medewerker' te zien?

Zoals eerder gezegd zal er uiteindelijk gewerkt worden met MySQL (icm ASP.NET / C#) maar ik denk (hoop) dat dit toch op een of andere manier in één enkele query moet te doen zijn?

ps: wat ik ook gedaan heb (maar denk niet dat dit functioneel in orde zal zijn) is een tweede query gemaakt waar ik enkel Employees en Users gebruik om vervolgens de Username op te halen van de medewerker op basis van een 'hard-coded' parameter..... en vervolgens deze query in de eerste laten zien....

code:
1
2
3
SELECT TblUsers.Username
FROM TblUsers INNER JOIN TblEmployees ON TblUsers.ID = TblEmployees.UID
WHERE (((TblEmployees.ID)=1));


Afbeeldingslocatie: http://img151.imageshack.us/img151/4537/dbquerym.th.jpg

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 27-11 09:19
Als ik even zo eheel snel kijk naar je query dan zoekt die heel iets anders.

SQL:
1
2
ON (TblUsers.ID = TblReservations.UID) 
   AND (TblUsers.ID = TblEmployees.UID);

Hiermee zoek je naar klanten die kun eigen reservering hebben gemaakt en ook nog werknemer zijn. Dus eigen werknemer die een reis voor zichzelf boeken.

Kijk nog eens goed naar hetgeen je wilt weten dus.

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-11 16:24

dj_vibri

int(e^x) = f(u)^n

Topicstarter
Redshark schreef op dinsdag 18 augustus 2009 @ 09:56:
Als ik even zo eheel snel kijk naar je query dan zoekt die heel iets anders.
...

Hiermee zoek je naar klanten die kun eigen reservering hebben gemaakt en ook nog werknemer zijn. Dus eigen werknemer die een reis voor zichzelf boeken.

Kijk nog eens goed naar hetgeen je wilt weten dus.
Deze query is de gene die automatisch aangemaakt wordt wanneer ik een nieuwe query wil maken met deze drie tabellen en enkel 'Username' wil laten zien.... (vandaar het tweede stuk uitleg als ik de AND weg haal, ik wel de Username krijg van de klant maar niet van de medewerker)....

offtopic:
gaat hier niet over reizen, maar kapsalon :)

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 27-11 09:19
Tja, ik wil graag op vakantie :P

Die joins worden automatisch gelegd op basis van de relaties die je hebt gedefinieerd. Die hoeven niet perse goed te zijn of je query vereist andere relaties. In jouw geval zal ik de relaties tussen users en employees weghalen (in je query designer, of hoe dat ding ook heet in access, je relateis selecteren en op delete drukken.) dan kom je er wel uit.

Ik zit eens naar je model te kijken maar wat moet je met die employee tabel? Meer dan een koppeltabel is het niet of is dit maar een voorbeeld ofzo?