Forums Neueste Beiträge
 

AbfrageProblem - angeblich mehrdeutige Joins

26/06/2009 - 10:35 von Volker Neurath | Report spam
Hallo zusammen,

und wiedermal brauche ich eure Hilfe.

Hintergrund:
ich habe drei Tabellen (Aufbau siehe spàter) mit deren Hilfe ich ab- und
angekündigte Produkte verwalte - aus rein informationstechnischen
Gründen.

Heisst: ich speichere die Produktnummer und -beschreibung, die
Produktgruppe (Projektor, Scanner, Laser-, Tinten- oder
Großformatdrucker)
sowie den Aktivitàtsstatus ("launched" oder "discontinued")

Nun möchte ich mit einer Abfrage zunàchst mal alle Produkte mit
Produktgrppe und Status (alles im Klartext) und habe dafür grafisch
folgende Abfrage gebastelt:

tblProducts
tblProductType
ProductID --
fkTypeID <n1- TypeID
ProductCode TypeText
ProductDescr
fkStatusID <n-+ tblPStates
| -
| StatID
+1- StatText

die in folgendem SQL-String resultiert:

SELECT tblProductStates.productID ,
tblProductStates.ProductCode,
tblProductTypes.TypeText ,
tblPstates.status
FROM tblPstates
LEFT JOIN (tblProductTypes
LEFT JOIN tblProductStates
ON tblProductTypes.TypeID = tblProductStates.fkTypeID)
ON tblPstates.statID = tblProductStates.StatusID;

Den Versuch, diese auszuführen, quittiert Access mit dem Hinweis, ich
hàtte Mehrdeutige Inklusionsverknüpfungen und ich möge doch bitte die
Abfrage aufteilen.

einer von uns beiden - Access oder ich - ist zu blöd, den anderen zu
verstehen.
Alles was ich will ist, alle Artikel aus Tabelle tblProductStates
anzeigen, wobei statt der IDs für Status und Produkttyp der jeweilige
klartext erscheinen soll ( also statt Status=1 soll "launched" kommen
und statt Produkttyp=1 eben "Projektor")

Wo ist der Haken?

Volker

Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
 

Lesen sie die antworten

#1 Peter Doering
26/06/2009 - 11:00 | Warnen spam
Hallo,

Volker Neurath wrote:

[...]
Nun möchte ich mit einer Abfrage zunàchst mal alle Produkte mit
Produktgrppe und Status (alles im Klartext) und habe dafür grafisch
folgende Abfrage gebastelt:

tblProducts
tblProductType
ProductID --
fkTypeID <n1- TypeID
ProductCode TypeText
ProductDescr
fkStatusID <n-+ tblPStates
| -
| StatID
+1- StatText

die in folgendem SQL-String resultiert:

SELECT tblProductStates.productID ,
tblProductStates.ProductCode,
tblProductTypes.TypeText ,
tblPstates.status
FROM tblPstates
LEFT JOIN (tblProductTypes
LEFT JOIN tblProductStates
ON tblProductTypes.TypeID = tblProductStates.fkTypeID)
ON tblPstates.statID = tblProductStates.StatusID;

Den Versuch, diese auszuführen, quittiert Access mit dem Hinweis, ich
hàtte Mehrdeutige Inklusionsverknüpfungen und ich möge doch bitte die
Abfrage aufteilen.



Du muesstest das innere Konstrukt (tblProductTypes / tblProductStates) in
eine eigene Abfrage auslagern und diese mit tblPstates verknuepfen.

Alles was ich will ist, alle Artikel aus Tabelle tblProductStates
anzeigen, wobei statt der IDs für Status und Produkttyp der jeweilige
klartext erscheinen soll ( also statt Status=1 soll "launched" kommen
und statt Produkttyp=1 eben "Projektor")



Dann musst du die Abfrage aber anders aufbauen. Im Moment wuerdest du alle
PStates bekommen egal ob ProductTypes oder ProductStates vorhanden sind.

Aendere erstmal alle LEFT JOINs auf INNER JOINs. Vielleicht passt das
Ergebnis dann schon.

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen