SQL从第三级表中选择

SQL从第三级表中选择,sql,Sql,好吧,我对SQL知之甚少,所以请容忍我 我想看看第三级表中是否存在某些值,但我不知道如何处理。下面是一个场景 我有一个事故表,里面有事故信息。它有3个一对多的子表单元、占用者、非机动者。每个子表都有自己的多对多子表酒精。我需要能够以某种方式查看这些酒精表中的字段中是否存在一系列值。这是我的表格结构的简化版本 --tblAccident--_ PK_AccidentNumber --tblAccidentUnit-- PK_PrimaryKey FK_AccidentNumb

好吧,我对SQL知之甚少,所以请容忍我

我想看看第三级表中是否存在某些值,但我不知道如何处理。下面是一个场景

我有一个事故表,里面有事故信息。它有3个一对多的子表单元、占用者、非机动者。每个子表都有自己的多对多子表酒精。我需要能够以某种方式查看这些酒精表中的字段中是否存在一系列值。这是我的表格结构的简化版本

--tblAccident--_  
PK_AccidentNumber    

--tblAccidentUnit--  
PK_PrimaryKey  
FK_AccidentNumber  

--tblAccidentOccupant--    
PK_PrimaryKey  
FK_AccidentNumber

--tblAccidentNonMotorist--  
PK_PrimaryKey  
FK_AccidentNumber

--tblAccidentUnitAlcohol--  
PK_PrimaryKey  
FK_ForeignKey  
AlcoholValue <---- THIS IS WHAT I NEED TO SEARCH   

--tblAccidentOccupantAlcohol--  
PK_PrimaryKey  
FK_ForeignKey  
AlcoholValue <---- THIS IS WHAT I NEED TO SEARCH   

--tblAccidentNonMotoristAlcohol--  
PK_PrimaryKey  
FK_ForeignKey  
AlcoholValue <---- THIS IS WHAT I NEED TO SEARCH 

我希望这对我正在努力实现的目标有一定的意义。谢谢

如果范围存在,我假设您只想从第三级表中获取信息

请尝试下面给出的查询:

由于未指定数据库,我不确定数据库中的BETWEEN运算符是否包含测试值

SELECT  AccidentNumber, 'AccidentUnit' AS TableFound, c.PrimaryKey AS TableKeyValue
  FROM  tblAccident a INNER JOIN tblAccidentUnit b
      ON    a.AccidentNumber = b.AccidentNumber INNER JOIN tblAccidentUnitAlcohol c
        ON  b.PrimaryKey = c.ForeignKey
     AND    c.AlcoholValue BETWEEN <RANGE_START> AND <RANGE_END>
UNION       
SELECT  AccidentNumber, 'AccidentOccupant' AS TableFound, c.PrimaryKey AS TableKeyValue
  FROM  tblAccident a INNER JOIN tblAccidentOccupant b
      ON    a.AccidentNumber = b.AccidentNumber INNER JOIN tblAccidentOccupantAlcohol c
        ON  b.PrimaryKey = c.ForeignKey
     AND    c.AlcoholValue BETWEEN <RANGE_START> AND <RANGE_END>
UNION
SELECT  AccidentNumber, 'AccidentNonMotorist' AS TableFound, c.PrimaryKey AS TableKeyValue
  FROM  tblAccident a INNER JOIN tblAccidentNonMotorist b
      ON    a.AccidentNumber = b.AccidentNumber INNER JOIN tblAccidentNonMotoristAlcohol c
        ON  b.PrimaryKey = c.ForeignKey
     AND    c.AlcoholValue BETWEEN <RANGE_START> AND <RANGE_END>     

您能描述一下您想要在结果中包含哪些行和列吗?你试过什么吗?如果是的话,你能把它贴出来吗?我还是有点不清楚。你的意思是,给定一个PK_acidentNumber,在三个具有酒精值的表中,任何一个表中可能的酒精值是什么?你想通过连接酒精值在某个范围内的酒精值来获得所有事故吗?使用UNION all,因为不需要区分。它会快得多。