从有条件的3个连接表中选择?

时间:2013-12-13 09:44:25

标签: mysql sql database join group-by

我有四张桌子:

请求:

id----salesid--custid---serial-----active
=======================================
1-------2-------1--------13221-------1
2-------1-------2--------15422-------1
3-------1-------3--------11233-------1
4-------2-------1--------11342-------1

salesid是emp表中的外键,除了emp id之外我们不需要员工表中的任何内容,因此显示其详细信息并不重要

custid是客户ID的外键

serial是该请求的序列

active是删除标志

requestcondition:

id-----requestid-----requestcondition 
======================================
1--------1-------------pending
2--------1-------------installation pending 
3--------2-------------pending  
4--------1-------------completed

客户:

id------name
============
1-------aaaa
2-------bbbb
3-------cccc

我想根据salesid列选择为特定请求添加的最后条件以及客户名称和请求序列

2 个答案:

答案 0 :(得分:1)

尝试

SELECT Id=scope_identity();

或者

LAST_INSERT_ID();

通过这个你可以获得最后插入的Id,在获得最后一个条件后,在this Link上实现joins.Read。

答案 1 :(得分:0)

    select r.id, rc.id, c.name, r.serial, rc.requestcondition
    from request r
    inner join customer c on c.id=r.custid
    inner join requestcondition rc on rc.requestid=r.id
    inner join (
       select max(id) as rcid
        from requestcondition
        group by requestid
    ) latest on latest.rcid=rc.id

这将提供所有请求的最新状态。如果您只需要一个请求的最新状态,则需要在最后添加where子句。