Hallo zusammen,
irgendwie stoße ich gerade an die Grenze meiner SQL Skills und bitte deswegen hier um eure Hilfe. Zur Verdeutlichung worum es geht, habe ich die mir vorliegende Tabelle gezeichnet:
screenshot_221.jpg
Es geht hier um Daten die täglich neu hinzu kommen. Außerdem ist es eine MxN aufschlüsselnde Tabelle die noch weitere Daten enthält (die hier aber keine Rolle spielen).
Die Tabelle hat einen Primärschlüssel (data_id). Die Farblich markierten key1, key2 und typ müssen mir irgendwie als "Schlüssel" für die Abfrage dienen. Wie zu erkennen ist, gehören jeweils A B und C an verschiedenen Tagen zusammen.
Ich brauche jetzt zwei Abfragen. Zum einen sollen alle neue Werte ausgegeben werden, zum anderen sollen alle verschwundenen Werte ausgegeben werden. Ein Ergebnisbeispiel:
Ergebnis Neue Werte:
A, weil dieses am ersten Tag nicht vorhanden war
Ergebnis verschwundene Werte:
C, weil es am letzten Tag nicht mehr vorhanden ist.
Als Rückgabe benötige ich natürlich key1, key2 und typ DISTINCT.
Ich habe das Problem eigentlich schon per PHP gelöst. Da mache ich 2 Datenbankabfragen und Werte dann zwei Arrays gegeneinander aus. Das ist aber auf Dauer nicht performant, daher möchte ich das gerne per SQL Query lösen.
Unterabfragen habe ich auch versucht, aber ich glaube das ist der falsche Ansatz. Selfjoin erscheint mir unsinnig.
Wäre dankbar für jeden Tipp bzw. Lösungsansatz.
Danke sehr!!!
irgendwie stoße ich gerade an die Grenze meiner SQL Skills und bitte deswegen hier um eure Hilfe. Zur Verdeutlichung worum es geht, habe ich die mir vorliegende Tabelle gezeichnet:
screenshot_221.jpg
Es geht hier um Daten die täglich neu hinzu kommen. Außerdem ist es eine MxN aufschlüsselnde Tabelle die noch weitere Daten enthält (die hier aber keine Rolle spielen).
Die Tabelle hat einen Primärschlüssel (data_id). Die Farblich markierten key1, key2 und typ müssen mir irgendwie als "Schlüssel" für die Abfrage dienen. Wie zu erkennen ist, gehören jeweils A B und C an verschiedenen Tagen zusammen.
Ich brauche jetzt zwei Abfragen. Zum einen sollen alle neue Werte ausgegeben werden, zum anderen sollen alle verschwundenen Werte ausgegeben werden. Ein Ergebnisbeispiel:
Ergebnis Neue Werte:
A, weil dieses am ersten Tag nicht vorhanden war
Ergebnis verschwundene Werte:
C, weil es am letzten Tag nicht mehr vorhanden ist.
Als Rückgabe benötige ich natürlich key1, key2 und typ DISTINCT.
Ich habe das Problem eigentlich schon per PHP gelöst. Da mache ich 2 Datenbankabfragen und Werte dann zwei Arrays gegeneinander aus. Das ist aber auf Dauer nicht performant, daher möchte ich das gerne per SQL Query lösen.
Unterabfragen habe ich auch versucht, aber ich glaube das ist der falsche Ansatz. Selfjoin erscheint mir unsinnig.
Wäre dankbar für jeden Tipp bzw. Lösungsansatz.
Danke sehr!!!
Comment