1

私は2つのテーブルを持っています:

STEP
id 
value




SCALE
id 
s1
s2
s3
s4
s5
s6

これで、step.id は scale.s1、scale.s2、scale.s3 などの外部キーになり、step から scale.s1-s6 の値を取得したいと考えています。ネストされた選択を使用してこのクエリを作成しました。1回の選択でこの値を取得することは可能ですか?

SELECT (
    SELECT step.val FROM step, scale WHERE step.id = scale.s1 AND scale.id = 1) as v1,(
    SELECT step.val FROM step,scale WHERE step.id = scale.s2 AND scale.id = 1) as v2, (
    SELECT step.val FROM step,scale WHERE step.id = scale.s3 AND scale.id = 1) as v3, (
    SELECT step.val FROM step,scale WHERE step.id = scale.s4 AND scale.id = 1) as v4, (
    SELECT step.val FROM step,scale WHERE step.id = scale.s5 AND scale.id = 1) as v5, (
    SELECT step.val FROM step,scale WHERE step.id = scale.s4 AND scale.id = 1) as v6, (
    SELECT step.val FROM step,scale WHERE step.id = scale.s5 AND scale.id = 1) as v7 ;
4

2 に答える 2

0

MAXandを使用して単一のクエリを使用して実行できますCASE

SELECT
  MAX(CASE WHEN scale.s1 = step.id THEN step.val END) v1,
  MAX(CASE WHEN scale.s2 = step.id THEN step.val END) v2,
  MAX(CASE WHEN scale.s3 = step.id THEN step.val END) v3,
  MAX(CASE WHEN scale.s4 = step.id THEN step.val END) v4,
  MAX(CASE WHEN scale.s5 = step.id THEN step.val END) v5,
  MAX(CASE WHEN scale.s6 = step.id THEN step.val END) v6
FROM step, scale
WHERE scale.id = 1

そして、ここにFiddleがあります。

幸運を。

于 2013-02-08T20:41:10.180 に答える
0

ステップに複数回参加するだけです。最初の 3 つを次に示します。

select s.id, s1.val as v1, s2.val as v2, s3.val as v3
from scale s
join step s1 on s.s1 = s1.id
join step s2 on s.s2 = s2.id
join step s3 on s.s3 = s3.id
于 2013-02-08T23:39:29.303 に答える