Problem mit SQL-Abfrage in Access 2007 (Access)

alex @, Donnerstag, 23.07.2009, 17:05 (vor 3792 Tagen)

Hallo,

ich benutze erst seit ein paar Tagen Access, kenne mich jedoch gut mit SQL aus. Deshalb versuche ich, einfach Abfragen zu schreiben, für jedes Formular eine. Die Formulare müssen auch nicht notwendigerweise über die Oberfläche miteinander erknüpft sein.

Mein SQL für eine Abfrage funktioniert aber nicht so in Access, wie ich es erwarten würde.

Tabelle A soll mit einem Feld (Feld hat Zahlenwert) aus Tabelle B über ein INNER JOIN verknüpft werden. Dabei soll jeweils ein Datensatz aus A mit bis zu drei Datensätzen aus B kombiniert werden. Das geht theoretisch, weil ich die Summe des B-Feldes bilde.

Aus einem Grund, den ich nicht verstehe, fragt mich Access aber immer nach der ID, über die gejoined wird, ich soll einen Parameter angeben, was ich aber nicht will. Für jede Zeile aus A (und jede ID aus A) soll das Ganze gemacht werden....

Bin für jeden Tipp dankbar.
Hier der SQL-Code. Die Tabelle B ist eine Historie. Um nur die aktuellen Datensätze zu bekommen, über die ich die Summe bilden will, muss ich also erstmal ein unter-SELECT ausführen. Vielleicht liegt hier ein Problem.


SELECT a.ID, a.Bezeichnung, SUM(b.Tage) AS Summe_Kont, a.Letzte_Aktualisierung

FROM tab_Anforderung AS a, tab_Historie AS b

WHERE a.ID = b.Anforderungs_ID AND b.Änderungsdatum =

( SELECT MAX(Änderungsdatum)

FROM tab_Historie

WHERE AnforderungsID =a.ID)

GROUP BY a.ID, a.Bezeichnung, a.Letzte_Aktualisierung;


Vielen Dank im voraus.

Problem mit SQL-Abfrage in Access 2007 (2)

alex @, Donnerstag, 23.07.2009, 18:19 (vor 3792 Tagen) @ alex

Inzwischen habe ich meinen Code abgeändert, weil ich dachte, das JOIN funktioniert nicht richtig, das war es aber nicht.

Also alles wie vorher, aber ich habe aus Spass und Dollerei in meinem SUbselect einen Parameter 2 angegeben. Wenn ich die Abfrage nun ausführe, werde ich nach einem Parameter für ID gefragt, gebe 2 an, und bekomme das gewünschte Ergebnis genau wie ich es ursprünglich haben wollte. Und zwar für alle Records aus Tabelle A. Wieso??
Und wie bekomme ich das hin, ohne nach einer Eingabe gefragt zu werden?

SELECT a.ID, Bezeichnung, SUM(h.Tage) AS Ges_Kon

FROM A AS a INNER JOIN tab_Historie AS b ON a.ID=b.Anforderungs_ID

GROUP BY a.ID, Bezeichnung, b.Änderungsdatum

HAVING b.Änderungsdatum =

( SELECT MAX(Änderungsdatum)

FROM tab_Historie b

WHERE b.AnforderungsID =2);


Vielen Dank für eventuelle Hilfe....!

Viele Grüße,

Alex aus Berlin

Problem mit SQL-Abfrage in Access 2007

Martin Asal @, Donnerstag, 23.07.2009, 20:46 (vor 3792 Tagen) @ alex

Aus einem Grund, den ich nicht verstehe, fragt mich Access aber immer nach der ID, über die gejoined wird, ich soll einen Parameter angeben

Das klingt, als ob Access Deine Abfrage als Parameterabfrage interpretiert. Schau Dir mal spaßeshalber den Code in folgender Nahricht an:

http://forum.access-tutorial.de/index.php?id=7

Ich würde mal vermuten, das Problem liegt in deiner Unterabfrage; dort findet sich ja

 
WHERE AnforderungsID =a.ID
 

obwohl "a" in der Unterabfrage gar nicht vorkommt (kein FROM).

bis denn
Martin

RSS-Feed dieser Diskussion
powered by my little forum