combine multiple select statement in SQL

user9112767 :

I've just started learning SQL. Here is part of my Database:

enter image description here

I want to get the project name from the Project table with condition:

name = 'turbine' and value = '03' in Parameter table.

I have wrote the following query and it seems to work! But I was wondering if any smarter query can do the job for me :

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 :

Instead of several nested IN clause with subquery seems more easy to read a proper set of inner join

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' 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=5591&siteId=1