3 Tabellen, JoIN

marcfunkitug

Neuer Benutzer
Beiträge
2
Hallo!

Es gibt 3 Tabellen in der folgenden Struktur:
Code:
Tabelle "planner"
id, type, filename, duration, sorting

Code:
Tabelle "videos"
id, filename, title, duration

Code:
Tabelle "fotos"
id, filename, title, duration

Nun soll auf der Seite der Planung jeweils der Title angezeigt werden, die er sich vorher aus den Tabellen anhand des "filename" holt.

Mein Query sieht zur Zeit so aus:
Code:
SELECT
`planner`.`id`, 
`planner`.`type`, 
`planner`.`filename`, 
`planner`.`duration`, 
`planner`.`sorting`, 
`fotos`.`title`, 
`videos`.`title`
FROM `planner`
LEFT JOIN `videos` ON (`planner`.`filename`=`videos`.`filename`)
LEFT JOIN `fotos` ON (`planner`.`filename`=`fotos`.`filename`)
ORDER BY `planner`.`sorting`

Nun gibt er mir zwar ALLE Datensätze aus "planner" zurück, zeigt jedoch bei den Titeln nicht die der Fotos an. Ist das grundsätzlich nicht möglich die Daten so auszulesen oder hab ich einen Hänger? :)

Danke im Voraus!
 
Werbung:
Code:
SELECT
`planner`.`id`,
`planner`.`type`,
`planner`.`filename`,
`planner`.`duration`,
`planner`.`sorting`,
`fotos`.`title`,
`videos`.`title`
FROM `planner`
FULL JOIN `videos` ON (`planner`.`filename`=`videos`.`filename`)
FULL JOIN `fotos` ON (`planner`.`filename`=`fotos`.`filename`)
ORDER BY `planner`.`sorting`
Willst du das so haben? Irgendwie verstehe ich dein Problem nicht wirklich...
Du hast zwei Spalten "title"... Wo willst du was anzeigen?
 
Hallo Distrilec!

Die Tabelle "planner" enthält den Ablaufplan der Videos und Fotos. Wenn man auf die Seite für den Ablaufplan geht zeigt er alle Einträge bestehend aus Videos und Fotos an (Titel, Typ und Dauer):
Titel | Typ | Dauer
Hund | Foto | 10 Sekunden
Marathon | Video | 23 Sekunden
Katze | Foto | 10 Sekunden

Um diese Liste zu generieren muss ich die Daten aus "planner" lesen und mit "fotos" und "videos" verknüpfen, damit ich den "title" bekomme.
Eine andere Lösung wäre (da die Tabellenstruktur von fotos und videos gleich ist) eine Tabelle "objects" zu machen mit einem zusätzlichen Feld "type". Dann ist es ja überhaupt kein Problem mehr. Allerdings würde mich trotzdem interessieren, ob es dafür eine Lösung gibt, wenn ich 3 Tabellen habe und diese aus 2 anderen Details lesen soll.
 
Werbung:
Achso.... Ja klar geht das :)
Code:
Select p.id
      ,Case
          When v.id Is Null Then
           'Foto'
          Else
           'Video'
       End As content_type
      ,coalesce(v.title, f.title) As title
      ,coalesce(v.duration, f.duration) As duration

From   planner p

Left   Join videos v
On     v.filename = p.filename

Left   Join fotos f
On     f.filename = p.filename
 
Zurück
Oben