MySQL Forums
Forum List  »  German

LEFT JOIN mit WHERE Kriterien für beide Tabellen
Posted by: Roger Spinner
Date: February 22, 2016 05:37PM

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

Options: ReplyQuote


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.