Hallo zusammen
Ich hab da eine kleine Meinungsverschiedenheit mit Access

Mein Problem ist der INNER JOIN, speziell wenn man mehrere Tabellen miteinander verbindet. Access macht da irgendwelche Klammern, aber sobald mehr als zwei drei Tabellen vorkommen und ich als Primärschlüssel mehrere Attribute habe, werd ich nicht mehr schlau aus dem Code.
Was ich machen möchte, würde nach Standard so aussehen (bin nicht sicher, dass der Code 100%ig stimmt, da ich ihn noch nicht testen konnte):
Code:
SELECT *
FROM [Evaluation_objects] AS Ev_obj INNER JOIN [Object_types] AS Obj_t ON Ev_obj.Object_type_ID = Obj_t.Object_type_ID
INNER JOIN [Age_groups] AS Ag ON Ev_obj.Age_group_ID = Ag.Age_group_ID)
INNER JOIN [Object_property_values] AS Obj_p_v ON Ev_obj.Object_type_ID = Obj_p_v.Object_type_ID AND Ev_obj.Object_ID = Obj_p_v.Object_ID
INNER JOIN [Object_properties] AS Obj_p ON Obj_p_v.Object_property_ID = Obj_p.Object_property_ID AND Obj_p_v.Object_type_ID = Obj_p.Object_type_ID
INNER JOIN [Criteria_values] AS C_v ON Ev_obj.Object_type_ID = C_v.Object_type_ID AND Ev_obj.Object_ID = C_v.Object_ID
INNER JOIN [Evaluation_criterias] AS Ev_c ON C_v.Object_type_ID = Ev_c.Object_type_ID AND C_v.Object_criteria_ID = Ev_c.Object_criteria_ID
Ich weiss, sind viele Tabellen leider bin ich aber auf diese Abfrage angewiesen.
Irgendwie komm ich einfach nicht dahinter, nach welchem Prinzip Access die Klammern beim INNER JOIN verteilt (Sind ja teilweise recht abstruse Konstruktionen...). Kann mir jemand sagen, wich jetzt vorgehen muss, um diese Abfrage in Access hinzukriegen?
Ich wäre wirklich dankbar, wenn mir da jemand helfen könnte. Ich hab schon diverse Tutorials abgesucht, aber da wird nie auf so komplexe Abfragen eingegangen.
PS. Etwas das mich schon länger beschäftigt, bezüglich Abfragenoptimierung:
Wenn ich folgenden JOIN durchführe
Code:
SELECT *
FROM Table1 JOIN Table2 ON Table1.Key = Table2.Key
WHERE Key = 4
ist das Ergebniss ja klar. Wird jetzt aber zuerst die Tabelle verbunden und dann das Kriterium herausgefiltert? Oder bereits vorher?
Vom Code her meine ich das:
Code:
SELECT *
FROM (SELECT * FROM Table1 WHERE Key = 4)
JOIN (SELECT * FROM Table2 wHERE Key = 4)
Versteht ihr was ich meine?
Wird das vom DBMS selbst optimiert, oder muss ich das machen?
Vielen Dank im Voraus
Azrael