LEFT JOIN mit WHERE Kriterien für beide Tabellen
Hallo zusammen
Ich habe hier im Forum schon viel gelesen und gelernt. Vielen Dank an der Stelle an alle die sich hier Zeit nehmen Fragestellern wie mir zu helfen.
Seit einigen Tagen schon versuche ich eine Abfrage hinzubekommen, schaffe es aber nicht richtig sie sinnvoll zu gestalten. Meine gegenwärtige Lösung ist nicht performant und sprengt den Server.
Vereinfacht habe ich zwei Tabellen. Eine Tabelle mit Ereignissen (observations), und eine Tabelle mit Medien (media), die über observations.media_fk : media.relation (1:n) verbunden sind:
observations
id
ts
media_fk
media
id
typ
relation
Ich versuche nun die beiden Tabellen so zu verknüpfen, dass ich am Schluss eine Tabelle erhalte, bei der ich sowohl nach Kriterien der Tabelle observations (z.B. nach timestamp), als auch nach Kriterien der Tabelle media (z.B. die Nr. eines bestimmten medientyps (typ) filtern kann.
Dazu mache ich folgende Abfrage:
SELECT T.id, T.ts, T.bild FROM (SELECT observations.id, observations.ts, observations.media_fk, SUM(if(media.typ = '1', 1,0)) as bild FROM observations LEFT JOIN media ON observations.media_fk=media.relation WHERE observations.ts >= 1454284800 AND observations.ts <= 1456185600 GROUP BY observations.id, observations.ts, observations.media_fk ORDER BY observations.ts ASC) AS T WHERE T.bild > 0
Im Kleinen funktionierts tip top, aber mit ein paar zehntausend Daten in jeder Tabelle natürlich nicht mehr.
Kann mir jemand einen Tip geben, wie ich diese Abfrage sinnvoller gestalten kann?
Schon mal herzlichen Dank für allfällige Feedbacks!
Beste Grüsse
RS
Subject
Views
Written By
Posted
LEFT JOIN mit WHERE Kriterien für beide Tabellen
1152
February 22, 2016 05:37PM
Sorry, you can't reply to this topic. It has been closed.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion
of Oracle or any other party.