2012-07-25 50 views
1

在我的数据库中,我有以下三个表格与字段列出的表:加入基于参数

TablePS 

aID 

TableAM 

aID(pk) 
bID 

TableM 

bID(pk) 
bName 

如果我知道TablePS的帮助下,我怎么能找到BNAME的TableM价值? 我曾尝试以下查询:

SELECT bName FROM TableM WHERE bID= 
(SELECT TablePS.aID,TableAM.aID 
FROM TablePS 
INNER JOIN TableAM 
ON TablePS.aID= TableAM.aID) 

回答

4
select bName 
from tableM 
    inner join tableAM on tableM.bID = tableAM.bID 
where 
    aID = [value] 

应该足够了。 如果您需要连接到表PS,然后

select bName 
from tableM 
    inner join tableAM on tableM.bID = tableAM.bID 
    inner join tablePS on tableAM.aID = tablePS.aID 
1
Select BName from TableM as M inner join TableAM as Am on M.bId=Am.bID 
inner join TablePS as P on Am.Aid=P.Aid 
+0

不工作查询 – John 2012-07-25 11:34:44

+0

@John“不工作的查询”是什么意思? – 2012-07-25 12:05:44

+0

@AaronBertrand - 我猜测John的意思是“查询无法正常工作”。看起来不错,虽然 – whytheq 2012-07-25 12:26:17

1
SELECT k.bName 
FROM TablePS p 
    INNER JOIN TableAM m ON m.aID = p.aID 
    INNER JOIN TableM k on k.bID = m.bID 
+0

不工作查询 – John 2012-07-25 11:35:38

+0

对,我的坏,改变引用正确的别名 – Steve 2012-07-25 11:42:25

+0

任何其他方式没有内部联接 – John 2012-07-25 12:15:42

0

如果你不想使用可能JOIN当时的这一点。

我假设aId是INT类型,您可以更改。

declare @x as int = 10 --<<change to an id that you are searching for 

select bname from TableM where bid in 
      (
      select bID from TableAM 
      where aID in 
          (
          select aID from TablePS where aId = @x 
          ) 
      )