2016-04-06 7 views
1

現在のSQLコードを使用して列を引っ張ると、次のとおりです。SQL:サブクエリ?条件

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 

はclose_adj_previous_dayを取得しようとしています。現在、私は、次のようなclose_adj_previous日を取得するために別のクエリを使用します。

 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 

にはどうすればいい結果がトップクエリとしてソートするために得るために、これらのクエリを組み合わせることでしょうか?ありがとうございます/ギャル。テーブルから

セミ例は:あなたは、変数を持っている場合は

Example Table Kind Of

+0

サンプルデータと望ましい結果がクエリに役立ちます。 –

+0

イメージを半例のテーブルとして追加しました。 – Aoi

答えて

1

、使用join: あなたは、変数の前の日の値を持っています。 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