晚辈设计了一个表tmpTable,内容有:录入人,录入部门,最后编辑人,最后编辑部门等字段
其中:录入人字段内容是"录入人"数据表中相应人员的ID,录入部门字段内容是"部门"数据表中相应部门的ID
因为录入人,部门与最后编辑人,部门的的数据内容不一样,但具体内容都是放在上面提到的那两个表中
该怎么样做连接才可以同时显示出录入人,部门与最后编辑人,部门的实际内容呢??谢谢!

解决方案 »

  1.   

    应该类似于:select 人员表1.姓名, 部门表1.部门, 人员表2.姓名, 部门表2.部门
    from tmpTable, 人员表 as 人员表1, 人员表 as 人员表2, 部门表 as 部门表1, 部门表 as 部门表2
    where 人员表1.人员ID = tmpTable.录入人ID and 人员表2.人员ID = tmpTable.最后编辑人ID and tmpTable.录入部门ID = 部门表1.部门ID and tmpTable.最后编辑部们ID = 部门表2.部门ID
      

  2.   

    如果数据不是很多直接用连接查询select * from .....或者用视图
      

  3.   

    select 人员表1.姓名, 部门表1.部门, 人员表2.姓名, 部门表2.部门
    from tmpTable, 人员表 as 人员表1, 人员表 as 人员表2, 部门表 as 部门表1, 部门表 as 部门表2
    where 人员表1.人员ID = tmpTable.录入人ID and 人员表2.人员ID = tmpTable.最后编辑人ID and tmpTable.录入部门ID = 部门表1.部门ID and tmpTable.最后编辑部们ID = 部门表2.部门IDTO steedhorse(晨星) 
    我是用INNER JOIN方式做连接视图
    但只能做到显示录入人,录入部门  或者 最后编辑人,最后编辑部
    下面是代码,请帮看看怎么改好吗?
    SELECT dbo.company_dep.name AS depName, dbo.personnel.name AS humanName, 
          dbo.house_message.ID, dbo.house_message.msgSendTime, 
          dbo.house_message.msgSendName, dbo.house_message.msgSendDep, 
          dbo.house_message.msgReceiveName, dbo.house_message.handleIs, 
          dbo.house_message.memo, dbo.house_message.masReceiveDep
    FROM dbo.house_message INNER JOIN
          dbo.personnel ON 
          dbo.house_message.msgSendName = dbo.personnel.ID INNER JOIN
          dbo.company_dep ON dbo.house_message.msgSendDep = dbo.company_dep.ID
      

  4.   

    dbo.house_message.msgSendName          发送人
    dbo.house_message.msgSendDep           发送部门
    dbo.house_message.msgReceiveName       接收人
    dbo.house_message.masReceiveDep        接收部门
    dbo.personnel 人员表
    dbo.company_dep 部门表
      

  5.   

    dbo.personnel 人员表
    ID         人员id
    name       人员名称dbo.company_dep 部门表
    ID         部门ID
    name       部门名称dbo.house_message  消息表
    ID                    消息编号
    msgSendTime           消息发送时间
    msgSendName           消息发送人
    msgSendDep            消息发送部门
    msgReceiveName        消息接收人
    msgReceiveDep         消息接收部门
    house_message.memo    消息内容
      

  6.   

    CREATE TABLE 人员表
    (
    ID   INT,
    name VARCHAR(100)
    )
    go
    CREATE TABLE 部门表
    (
    ID INT,
    name VARCHAR(100)
    )
    go
    CREATE TABLE 消息表
    (
    ID INT,
    msgSendName VARCHAR(100),
    msgSendDep VARCHAR(100),
    msgReceiveName VARCHAR(100),
    msgReceiveDep VARCHAR(100),
    memo VARCHAR(100)
    )
    goINSERT INTO 人员表
    SELECT 1,'人员1'
    UNION ALL SELECT 2,'人员2'INSERT INTO 部门表
    SELECT 1,'部门1'
    UNION ALL SELECT 2,'部门2'INSERT INTO 消息表
    SELECT 1,'1','1','2','2','测试1'
    UNION ALL SELECT 2,'2','2','1','1','测试2'
    UNION ALL SELECT 3,'2','2','2','2','测试3'SELECT a.ID,a.memo,b.name as 消息发送人,d.name as 消息发送部门,c.name as 消息接收人,e.name as 消息接收部门 FROM 消息表 a 
    INNER JOIN 人员表 b ON a.msgSendName=b.ID 
    INNER JOIN 部门表 c ON a.msgReceiveName=c.ID
    INNER JOIN 人员表 d ON a.msgSendDep=d.ID
    INNER JOIN 部门表 e ON a.msgReceiveDep=e.IDDROP TABLE 人员表
    DROP TABLE 部门表
    DROP TABLE 消息表