Inner Join 3 tabellen

roi

Lieutenant
Registriert
Sep. 2007
Beiträge
759
Hi, ich hab ein problem bei einem Inner Join über 3 tabellen

SELECT ""+V.Anrede+" "+V.Name+", Telefon "+V.Telefon+"" AS Vertreterinfo, ""+K.Anrede+" "+K.Titel+" " +K.Name+" ,"+K.LKZ+" ,"+K.PLZ+", "+K.ORT+"" AS Kundeninfo
FROM (Vertreter AS V INNER JOIN Gebiet AS G ON V.VNr = G.VNr) INNER JOIN Kunde AS K ON G.LKZ = K.LKZ;


- Es sollen alle vertreterinfos zu einem Kunden in einem feld ausgegeben werden
- Es sollen alle Kundeninfos in einem feld ausgegeben werden

tabellen sind
Kunde:
-Knr ...
- LKZ (PK)

Gebiet
-PLZ
-LKZ (FK)
-VNr (FK)

Vertreter
-VNr(PK)
-Anrede ...

soweit ist alles richtig, der gibt mir aber ein Katesisches produkt aus, warum? das will ich nicht der soll zu jedem vertreter nur eine zeile ausgeben :D oder auch zu jedem kunden ist egal.

EDIT: Es handelt sich um ACCESS 2003

mfg Roi
 
Zuletzt bearbeitet:
Edit: Sollte deinen Post auch bis zu Ende lesen :D

Hast du das ganze mal anhand eines Datensatzes händisch nachvollzogen? Dabei wird es doch eigentlich relativ fix klar, wenn es ein Problem gibt.

Was bedeutet btw. LKZ? Länderkennzeichen?
 
Zuletzt bearbeitet:
LKZ ist Länderkennzeichnung

Ich find das Problem nicht, der innner join ist denk ich soweit richtig. hier mal das was da raus kommt:

http://k-tremmel.de/KAtes.JPG

man sieht: die 2te zusammengesetzte spalte (Kundeninfos) ist leer, obwohl in der "datenbank" datensätze drinnen sind

ich habs auch schonmal mit Group by Vertreter versucht, aber das gibt nur fehler

ES ist ACCES 2003
 
Zuletzt bearbeitet:
wie willst du denn einen JOIN machen, wenn du keine Verbindung zu den einzelnen Tabellen hast.

Entweder hast du nicht alle Felder der einzelnen Tabellen aufgelistet oder aber du hast keine brauchbare DB gestrickt.

Gruß
 
Gib doch einfach mal alle Spalten aller am Join beteiligten Tabellen aus.

Ist das eigentlich ein Versehen, dass in deinem ersten Post LKZ als PK markiert ist? Was ich als Länderkennzeichen kenne, ist eigentlich nichts was eine PK-Bedingung (->unique) erfüllen würde. Damit würde zumindest der Vertreter für alle Kunden eines LKZ repliziert werden. Ist es das, was du erreichen willst? (warum die Kundeninfo dann leer ist, ist mir auch nicht nicht ganz klar)
 
es sind alle am join beteiligten felder angegeben, !! die Datenbank ist nicht von mir !! ... leider ...

@7h3 n4c3r: nein die aufgabe ist es "allen kunden einen brief zu schreiben mit den details des für sie zuständigen vertreters ( Schulaufgabe )

über einen "where ... "-join geht es auch, aber ich frag mich warum das eben nicht mti dem inner join funktioniert, das sollte ja eigendlich die "richtigere" lösung sein

natührlich sind noch mehr felder in den tabellen die sollten aber unerheblich sein für die lösung des problems, da alle Primary keys und Foreign keys angegeben sind.
 
Zuletzt bearbeitet:
Inner Join und der Old-School Where-Join sind gleichwertig. Von daher verstehe ich dann nicht, warum der nicht funktioniert. Mal die Klammern weg gemacht?
 
Distinct funktioniert , aber er hat ja keinen doppelten eintrag im eigendlichen sinne, die felder sind ja alle unterschiedlich
 
Zurück
Oben