user9112767:
私はSQLを学び始めました。ここに私のデータベースの一部です:
私は条件付きプロジェクトテーブルからプロジェクト名を取得したいです:
name = 'turbine'
そして、value = '03'
でParameter
テーブル。
私は、次のクエリを書いているし、それが動作しているようです!どの賢くクエリが私のために仕事をすることができればしかし、私は思っていました。
SELECT name
FROM Project
WHERE id IN (
SELECT projectId
FROM Cases
WHERE id IN (
SELECT caseId
FROM ParamValue
WHERE parameterId IN (SELECT id FROM Parameter WHERE name = 'turbine')
AND value = '03')
)
;
scaisEdge:
代わりにサブクエリを持ついくつかのネストされたIN句の内部結合の適切なセットを読み取るために、より簡単に思えます
select distinct Project.name
from Project
INNER JOIN Cases ON Cases.projectId = Project.id
INNER JOIN ParamValue ON ParamValue.caseId = Cases.id
AND ParamValue.value ='03'
INNER JOIN Parameter ON ParamValue.parameterId = Parameter.id
AND Parameter.name = 'turbine'