# Access Join in SQL Join "umwandeln"



## desmoloch (15. September 2005)

hi

wir habe eine Datenbankanbindung per hsqldb und die SELECTS haben wir per Access Assistent erstellt. Ich blick bei den ganzen JOINS nicht durch, daher der Umweg über Access.
Aber leider ist dieser SELECT unter SQL nicht möglich, er sagt "Unexpected token Filmmedium." Und da diese ganzen INNER JOINS wirklich abenteuerlich aussehen, wollte ich fragen ob mir da nicht jemand helfen kann, das es auch unter sql geht 
Hier der SELECT:


```
SELECT Film.Name, Film.Jahr, Film.Inhalt, Film.Cover, FilmFormat.Format,
FilmGenre.Name, FilmMedium.Medium, FilmOrt.Ort FROM FilmOrt 
INNER JOIN (FilmMedium INNER JOIN (FilmGenre INNER JOIN 
(FilmFormat INNER JOIN Film ON FilmFormat.ID=Film.FormatID) ON 
FilmGenre.ID=Film.GenreID) 
ON FilmMedium.ID=Film.MediumID) ON FilmOrt.ID=Film.OrtID
```


----------



## shutdown (15. September 2005)

okay ich versuch jetzt mal ne Antwort.
Um das schlüssig zu beantworten müsste man aber wissen, worum es geht, was du willst, und was in den Tabellen drin ist.



> SELECT Film.Name, Film.Jahr, Film.Inhalt, Film.Cover, FilmFormat.Format,
> FilmGenre.Name, FilmMedium.Medium, FilmOrt.Ort



bleibt so.


```
FROM FilmOrt
 
INNER JOIN 
(    FilmMedium INNER JOIN 
     (    FilmGenre INNER JOIN 
          (    FilmFormat INNER JOIN Film ON FilmFormat.ID=Film.FormatID    ) 
          ON  FilmGenre.ID=Film.GenreID    
     ) 
     ON FilmMedium.ID=Film.MediumID
) 
ON FilmOrt.ID=Film.OrtID
```

Wenn ich das richtig sehe (und das unter Vorbehalt - ich weiß wie gesagt nicht was du raushaben willst), dann sind da keine großartigen Bedingungen vorhanden.
Du schließt lediglich mehrere Zeilen aus.
Das kannst du aber auch komplett am Schluss machen, was das ganze glaube ich vereinfachen würde (wie gesagt, ob der Effekt der gleiche ist, kann ich so nicht beurteilen)



```
From FilmOrt
join FilmMedium
join FilmGenre
join FilmFormat

where 

FilmFormat.ID=Film.FormatID AND
FilmGenre.ID=Film.GenreID AND
ON FilmMedium.ID=Film.MediumID AND
ON FilmOrt.ID=Film.OrtID
```

Alternativ wäre z.B. in Oracle folgendes möglich:

From FilmOrt, FilmMedium, FilmGenre, FilmFormat
Where ....


gruß shutdown


----------



## Julian Maicher (15. September 2005)

Probier es mal so:

```
SELECT f.Name, f.Jahr, f.Inhalt, f.Cover, ff.Format, fg.Name, fm.Medium, fo.Ort 
FROM Film AS f 
INNER JOIN FilmFormat AS ff ON (ff.ID = f.FormatID) 
INNER JOIN FilmGenre AS fg ON (fg.ID = f.GenreID) 
INNER JOIN FilmMedium AS fm ON (fm.ID = f.MediumID) 
INNER JOIN FilmOrt AS fo ON (fo.ID = f.OrtID)
```


----------



## shutdown (16. September 2005)

empfehle suye's Lösung.

Bei meiner arbeitet er mit zu vielen Crossjoins auf einmal, da dauert das dann länger.
Suye wirft nach jedem Crossjoin den Mist raus ^^


----------

