PDA

Vollständige Version anzeigen : Unterstützt Access Cross Join?


Peter06
24.03.2006, 10:08
Die Überschrift sagt eigentlich schon alles....


SELECT * FROM Artikel CROSS JOIN Gruppen

Da erhalte ich eine Meldung daß ein Fehler in der FROM-Anweisung wäre.

Anne Berg
24.03.2006, 10:28
Access kennt INNER Join, LEFT und RIGHT Join.

PS:
Wenn die Tabellen keinen gemeinsamen Verknüpfungsschlüssel haben, bekommst du <s>mit Inner Join</s> ohne Join ein "Cross-Tab"-Ergebnis - kartesisches Produkt, nicht Kreuztabelle! - war es das, was du meintest?

kwakS
24.03.2006, 10:32
Es gibt im Kontexmenü vom Abfrageassistenten auch die Option Kreuztabellenabfrage
Abfrgae in der Entwurfsansicht erstellen, dann auf den Reiter Abfrage klicken und unten ist dann die Kreuztabellenabfrage aufgeführt.

Nouba
24.03.2006, 10:49
Ja: <tt>SELECT A.*, G.* FROM Artikel AS A, Gruppen AS G;</tt>

Peter06
24.03.2006, 10:57
Hallo Anne und kwakS,

Danke Euch!

@Anne: Ja, ich meine ein Kartesisches Produkt.


Ich experimentiere derzeit mit Joins allgemein um so das ganze besser kennenzulernen. Aktuell muss ich mich noch mit Access "begnügen", bald wird jedoch ein SQL-Server zum Einsatz kommen um so auch die Stored Procedures kennenzulernen, die ja, soweit ich weiss, Access nicht unterstützt.

Daß Left Outer Join das gleiche ist wie Left Join habe ich schon festgestellt. Was noch fehlt ist Cross Join und Full Outer Join, dann sollte ich fast alle haben, verbleibt noch der Natural Join. Aber gemäß der Beschreibung von Anne dürfte das wohl in Access auch nicht möglich sein.



Aber die Kreuztabellenabfrage scheint mir auch interessant zu sein, nur ist das aktuell nicht das Thema, werde es aber sicherlich auch noch bald abhandeln.



Nochmals zur Antwort von Anne:
Wenn die Tabellen keinen gemeinsamen Verknüpfungsschlüssel haben, bekommst du mit Inner Join ein "Cross-Tab"-Ergebnis - kartesisches Produkt, nicht Kreuztabelle! - war es das, was du meintest?
Ja, nun möchte ich das aber richtig verstehen: Wenn ich eine Inner Join-Anweisung setze (z.B. als Abfrage oder aus einem externen Programm heraus) dann ändert sich das Ergebnis durch den Verknüpfungsschlüssel? Hab ich also keinen Verknüpfungsschlüssel gesetzt erhalte ich das kartesische Produkt und bei gesetztem Schlüssel nur die (eigentlich) gewünschten Übereinstimmungen?


Beispiel (das ist nur eine Testdatenbank):
Da Artikel nur zu einer Artikelgruppe gehören kann, eine Artikelgruppe aber zu mehreren Artikeln, ist es ja eine 1:n-Beziehung. Wenn ich also schreibe:
SELECT ArtikelName FROM Artikel Inner Join Gruppen ON Artikel.GruppenID = Gruppen.GruppenID
Dann verändert sich das Ergebnis dann, wenn ich (wie jetzt aktuell) keinen Verknüpfungstyp angegeben habe im Vergleich dann, wenn ich einen Verknüpfungstyp angebe? Oder liege ich falsch? Und falls ich falsch liege, wie sähe dann eine derartige Anweisung aus?

Peter06
24.03.2006, 10:58
Hallo nouba,

Deine Antwort hab ich nicht mehr gesehen, tschuldige, werd das mal schnell testen...

Anne Berg
24.03.2006, 11:03
Ja, und ich habe meinen Fehler dank Noubas Beitrag inzwischen auch bemerkt! :rolleyes:

Peter06
24.03.2006, 11:08
Hallo nouba,

getestet und für gut empfunden! Schade nur daß Access die Anweisung Cross Join (wie auch einge andere Joins) nicht unterstützt. Werd wohl doch schneller auf eine andere DB umsteigen müssen. Jetzt muss ich mich "nur" noch um den Full Outer Join und den Natural Join kümmern dann bin ich (hoffentlich) mit den Joins fertig. Wobei ich dann noch das ganze mit mehreren Tabellen noch testen möchte.

Ich hoffe, daß ich das Forum (ja eigentlich die Leute darin) dann nochmals befragen darf. Aber die ganzen Joins sind mir noch nicht so geläufig und daher wollte ich mich jetzt endlich mal damit beschäftigen...

Gibt es eigentlich eine gute Doku dazu? Also zu Join und SQL.

Zunächst mal möchte ich eine Allgemeine Einführung, erst dann auf Access, SQL-Server und MySQL vertiefen.

Anne Berg: Beiträge: 10.574, Registrierung: 11.09.2001
Nouba: Beiträge: 20.973, Registrierung: 01.08.2002
Daß man bei derart vielen Beiträgen nicht nur Fragen stellt sondern antwortet ist mir klar. Daher: Fettes Respekt dafür!