2016-04-06 15 views
1

aktuellen SQL-Code ist:SQL: Unterabfrage? Ziehen Spalte Bedingung

SELECT k.id, k.symbol, y.close, y.volume, 
((y.close/y.close_adj_previous_day)-1) AS percent_change 
     FROM symbols k 
     JOIN stocks y ON k.id = y.id 
    WHERE 
     k.t_removed = 0 
     AND t = '$max_t' 
    ORDER BY percent_change DESC 
    LIMIT 10 

Der Versuch, die close_adj_previous_day zu bekommen. Derzeit verwende ich eine andere Abfrage den close_adj_previous Tag als solche zu erhalten:

 SELECT k.close_adj AS close_adj_previous_day 
     FROM stocks k 
     WHERE 
      k.id = '$id' 
      AND k.t = '$max_t_minus_one' 
     LIMIT 1 

Wie würde ich diese Abfragen zu kombinieren, bekommt das Ergebnis als Top-Abfrage sortiert werden? Danke Jungs/Mädels.

Semi Beispiel aus der Tabelle:

Example Table Kind Of

+0

Beispieldaten und gewünschte Ergebnisse würden Ihre Abfrage helfen. –

+0

Ich habe ein Bild als Semi-Beispieltabelle hinzugefügt. – Aoi

Antwort

1

Wenn Sie die Variablen haben, verwenden Sie ein join: Sie haben die Vortages-Wert in einer Variablen. Sie können einfach eine join:

SELECT k.id, k.symbol, y.close, y.volume, 
    ((y.close/yprev.close)-1) AS percent_change, 
    yprev.close_adj AS close_adj_previous_day 
FROM symbols k JOIN 
    stocks y 
    ON k.id = y.id AND y.t = '$max_t' JOIN 
    stocks yprev 
    ON k.id = yprev.id and yprev.t = '$max_t_minus_one' 
WHERE k.t_removed = 0 
ORDER BY percent_change DESC 
LIMIT 10