SQL Server-Abfrage für viele bis viele Beziehungen

8

Ich habe die folgende Viele-zu-viele-Beziehung (Siehe Bild unten) in meinem SQL-Server.

In den meisten Fällen gibt es zwei Zeilen in der Tabelle tblWavelengths, die sich auf die Tabelle tblSensors beziehen (in manchen Fällen nur 1 und im Extremfall 20 Zeilen)

Ich habe die folgende einfache Abfrage ausgeführt, um die Daten aus diesen drei Tabellen abzurufen:

%Vor%

Nach dem Ausführen dieser Abfrage habe ich folgende Ergebnisse erhalten:

Hier kommt mein Problem. Ich möchte eine Abfrage schreiben, die nur diejenigen Sensoren (SensorName) filtert, die zu einem bestimmten Zeitpunkt (DateTimeID) zwei Zeilen (zwei verschiedene Wellenlängen) in der Tabelle tblWavelengths haben. Also zum Beispiel möchte ich die Ergebnisse ohne haben der 77902/001 Sensor - weil er zu einem gegebenen Zeitpunkt nur eine Zeile (eine Wellenlänge) zu den tblSensors hat

    
patex1987 01.02.2013, 10:30
quelle

1 Antwort

10

Sie können eine Fensterfunktion verwenden, um die Anzahl der Wellenlängen für jede Sensorname / Datetimed-Kombination herauszufinden:

%Vor%

ANHANG

Als Nachdenken stellte ich fest, dass Sie vielleicht zwei Ergebnisse für einen Sensor gleichzeitig mit der gleichen Wellenlänge haben, die 2 Datensätze zurückgeben, aber nicht zwei verschiedene Wellenlängen haben. Da Fensterfunktionen die Verwendung von DISTINCT nicht unterstützen, ist eine Alternative unter

%Vor%     
GarethD 01.02.2013, 10:41
quelle

Tags und Links