2016-10-20 50 views
1

表DM: 列:MSGID(主键),msggrp 12345,ABC 表DT: 列:MSGID(PK),的TaskID 12345, 45678
表TLC: ID,STATEID,deliverymsgid(MSGID从DT表的参考文献),deliverytaskid (从DT表任务的引用) 32433,325,12345,45678SQL加入基于特定字段

我需要找到(TLC表)STATEID特定MSGID:

我写了一个查询它做的是使用:

select stateid from tlc 
where tasked in 
    (select tasked from DT 
    where messageid in ('12345') 
and stateid in 325 

此查询的作品,但我需要写与查询,其中有 where子句作为条件列msggroup(DM表)

其中在SQL Server

msgrp在( 'msggrp')请问你们,请帮助我。

+1

添加一些示例表格数据,以及预期结果 - 以及格式化文本。无论如何, – jarlh

+0

是DM还是DT表? – Viplock

+0

@ Viplock,yes是由msgid – SlickTester

回答

1

您可以像这样使用连接连接。

select stateid from tlc 
    join DT on tlc.deliverymsgid= DT.msgid 
    join DM on DT.msgid=DM.msgid 
    where DM.msggrp ='ABC' 

但我认为,你的数据库结构是不妥当的,你不应该有在这两个表MSGID的PK。一张桌子应该有它作为一个PK和其他表应该由FK连接它。

希望它能帮助你。