2014-02-10 94 views
0

下令我有两个表,一个投诉,另一个用于分配技术人员MySQL的连接查询的帮助:加入降序排列

表1不同右表行的两个表: - complaints

------------------------------------------ 
| id | complaint  | charges | status | 
------------------------------------------ 
| 1 | gas kit broken | 250  | 2  | 
| 2 | water leakage | 100  | 2  | 
| 3 | too much smoke | 150  | 2  | 
------------------------------------------ 

现在,1个抱怨很多技术人员可以得到又一个,直到投诉解决,使分配1

表2: - assign

------------------------------------------------ 
| id | complaint_id | technician | assign_date | 
------------------------------------------------ 
| 1 | 1   | 24   | 1391904000 | 
| 2 | 1   | 55   | 1391598500 |* 
| 3 | 2   | 20   | 1391600000 | 
| 4 | 2   | 31   | 1391676500 | 
| 5 | 2   | 25   | 1391665000 |* 
| 6 | 3   | 26   | 1391682000 | 
| 7 | 3   | 28   | 1391800000 |* 
------------------------------------------------ 

我想是加入抱怨的所有行与状态= 1到指定其中complaints .ID = assign .complaint_id的最后一排。

我已经与星(*)标记他们,所以输出shud是

----------------------------------------------------------------------------------------- 
| id | complaint  | charges | status | id | complaint_id | technician | assign_date | 
----------------------------------------------------------------------------------------- 
| 1 | gas kit broken | 250  | 2  | 2 | 1   | 55   | 1391598500 | 
| 2 | water leakage | 100  | 2  | 5 | 2   | 25   | 1391665000 | 
| 3 | too much smoke | 150  | 2  | 7 | 3   | 28   | 1391800000 | 
----------------------------------------------------------------------------------------- 

我的工作平台有: - PHP和MySQL

回答

1
select a.*, b.* 
from complaint as a left join 
    (select c.* 
    from assign as c 
    where c.id in (
     select max(d.id) as max_id 
     from assign as d 
     group by complaint_id)) as b 
     on a.id = b.complaint_id 
+0

它的工作谢谢:) –

+0

对,我对不起,我只是新来的,这就是为什么我不知道如何按照你的方式来设计我的答案。也许你可以教我?谢谢! – marce