SQL连接基于特定字段的3个表

时间:2016-10-20 07:25:04

标签: sql sql-server

表格DM: columns:msgid(主键),msggrp           12345,ABC 表DT: columns:msgid(PK),taskid          12345,45678
表格TLC: id,stateid,deliverymsgid(从DT表引用msgid),deliverytaskid (任务来自DT表) 32433,325,12345,45678

我需要从(TLC表)中找到特定msgid的stateid:

我写了一个查询,使用:

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

此查询有效,但我需要使用where子句编写查询 其中condition为msggroup列(DM表)

其中msgrp在('msggrp')in sql server

你们可以帮助我吗?

1 个答案:

答案 0 :(得分: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连接它。

希望它会对你有所帮助。