2016-09-25 1 views
-1

Ich habe eine Tabelle mit Messungen von Sternen. Jede Zeile (d. H. Eine Messung) enthält die ID des Sterns und seine Periode.MySQL Abfrage mit Bedingung basierend auf verschiedenen Zeilen

Lassen Sie uns sagen, zum Beispiel:

Star_ID Period 
1  3.6 
1  3.9 
2  4.11 
2  4.12 
2  8.5 
3  7.1 
4  1.31 
4  1.32 

ich eine Abfrage schreiben möchten, dass die Star_ID einzigem der Sterne gibt, die Messungen mit „close“ Perioden: Sterne, die 2 Perioden enthalten, die P1-P2 erfüllt < x. In unserem Beispiel sollte für x = 0,02 {2,4} zurückgegeben werden.

Kann mir jemand dabei helfen?

Vielen viel :)

+1

So beginnen Sie mit dem Schreiben einer Abfrage, wenn es nicht funktioniert Fragen Sie nach Hilfe mit Ihrer Abfrage ** SO! == free query coding ** – RiggsFolly

+1

Nun apparent bin ich falsch ___SO === Kostenlose Abfragen codiert hier___ – RiggsFolly

+0

gleichen Stern Kann nicht zweimal die gleiche Periode haben, richtig? –

Antwort

1

Eine Methode ist, mit einer Selbstverknüpfung und Aggregation:

select t.star_id 
from stars t join 
    stars t2 
    on t.star_id = t2.star_id and t.period <> t2.period 
group by t.star_id 
having min(abs(t.period - t2.period)) < 0.02; 

Hinweis: Diese zwei doppelte Zeilen ignorieren (eine Differenz von 0) gewonnen.

Verwandte Themen