2013-12-13 24 views
0

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

要求:

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,以便其以显示其细节并不重要

客户ID是客户ID的外键

序列是请求的串行

活性剂用于删除

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列请求序列号

回答

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子句。

+0

它得到错误“12:37:25 \t从请求中选择c.name,r.phone,rc.requestcondition r在c.id = r.custid内部连接上连接客户c(选择max(id)作为id from requestcondition group by requestid)rc on rc.requestid = r.id LIMIT 0,1000 \t错误代码:1054.'字段列表'中的未知列'rc.requestcondition'\t 0.001秒“ – Body

+1

我修复了查询。我工作的 – Rick

+0

谢谢:) – Body

1

试试

SELECT Id=scope_identity(); 

或者

LAST_INSERT_ID(); 

通过这个,你可以得到最后插入的标识和获得最后一个条件后,在this Link实施joins.Read了。