MichaelP Geschrieben 29. Mai 2003 Teilen Geschrieben 29. Mai 2003 Hallo Leute, also folgendes Problem. In einer Datenbank gibt es drei Tabellen. Diese Tabellen sind miteinander verknüpft. 1. Tabelle enthält Depotdaten 2. Tabelle enthält Aktienwerte (ca. 50) 3. Tabelle enhält Positionen über die die Menge der Aktien und die Depotdaten verknüpft sind. Ich möchte eine Abfrage erstellen in der abgefragt wird, vie viele Depots jeder einzelne Datensatz enthält. Also alle 50 Aktien auflistet und dann ausgibt in wievielen Depots sie ist. Das geht auch soweit. Bis auf einen kleinen Haken. Und zwar zeigt mir Access nur die Daten (9 Stück) an die >0 sind. Hat eine Aktie keine Verbindung zu einem Depot wird diese nicht angezeigt. Nehme ich nur Tabelle 1 und Tabelle 2 in die Abfrage werde 450 Datensätze angezeigt. Was kann ich machen, dass alle Datensätze angezeigt werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crow T. Robot Geschrieben 29. Mai 2003 Teilen Geschrieben 29. Mai 2003 Ersetze das INNER JOIN durch ein LEFT JOIN. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MichaelP Geschrieben 29. Mai 2003 Autor Teilen Geschrieben 29. Mai 2003 Original geschrieben von Crow T. Robot Ersetze das INNER JOIN durch ein LEFT JOIN. Hab ich gemacht. Allerdings bekomme ich die Fehlermeldung: Verknüpfungsausdruck nicht unterstützt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 30. Mai 2003 Teilen Geschrieben 30. Mai 2003 Die Verknuepfung heisst Left Outer Join. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MichaelP Geschrieben 30. Mai 2003 Autor Teilen Geschrieben 30. Mai 2003 Mit LEFT OUTER JOIN bringt er aber immer noch den gleichen Fehler. Das ist die von Access erzeugte Abfrage: SELECT Wertpapier.WPKNr, Wertpapier.Name, Count(Depot.Depotnr) AS AnzahlvonDepotnr FROM Wertpapier INNER JOIN (Depot INNER JOIN [Position] ON Depot.Depotnr = Position.Depotnr) ON Wertpapier.WPKNr = Position.WPKnr GROUP BY Wertpapier.WPKNr, Wertpapier.Name; Wenn ich also beide INNER JOIN durch LEFT OUTER JOIN ersetze kommt die gleiche Fehlermeldung wie bei LEFT JOIN. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lebertran Geschrieben 1. Juni 2003 Teilen Geschrieben 1. Juni 2003 Bei meinem Access (2000) funktioniert es, wenn du Inner durch Left ersetzt: SELECT Wertpapier.WPKNr, Wertpapier.Name, Count(Depot.Depotnr) AS AnzahlvonDepotnr FROM Wertpapier LEFT JOIN (Depot LEFT JOIN Position ON Depot.Depotnr = Position.Depotnr) ON Wertpapier.WPKNr = Position.WPKnr GROUP BY Wertpapier.WPKNr, Wertpapier.Name; Weiter oben schreibst du, dass du in der Positionentabelle die Anzahl der Aktien abspeicherst! Möchtest du die Anzahl der Aktien, die ausgegeben sind, dann solltest du diese Spalte noch mit hinzufügen (statt count(Depot.Depotnr) dann halt sum(Postion."Anzahl-Feld"), das count fällt gänzlich weg!) Möchtest du allerdings nur die Anzahl der Depots, in denen die Aktien sind, dann solltest du mit dem obigen Statemant klarkommen! Gruß Lebertran Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MichaelP Geschrieben 2. Juni 2003 Autor Teilen Geschrieben 2. Juni 2003 Hab das Problem gelöst. Musste nur die Beziehungen in der Abfrage über die drei Tabellen so einrichten, dass die Aktienwerte auf alle Werte der Depots und auf alle werte der Positionen verweist. Jetzt funktionerts! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lebertran Geschrieben 3. Juni 2003 Teilen Geschrieben 3. Juni 2003 genau das ist ja die Bedeutung von LEFT JOIN Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.