MySQL - JOIN的嵌套select语句?

ane*_*ion 1 mysql sql join

我有3个表正在使用内连接加入.表格是:

发票,合同和仪表.

一些简化的样本数据:

//invoice

id | contract_id

1  | 123

//contract

id  | meter_id | supplier     | end_date

123 | 100      | British Gas  | 2013-12-20

456 | 100      | nPower       | 2014-03-03

//meter

id  | meter-id
1   | 100
Run Code Online (Sandbox Code Playgroud)

我的目标是加入表格,但只检索最新的(MAX)end_date并获得供应商.通常这不是问题,但我只有合同123加入,而不是合同456.如图所示,它们都共享相同的meter_id.

//Current query
SELECT
contract.supplier AS supplierName
FROM invoice
INNER JOIN contract ON contract.id=invoice.contract_id
INNER JOIN meter ON meter.id=contract.meter_id
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?是通过嵌套选择还是什么?谢谢

Kev*_*tch 5

SELECT *
FROM
(
    SELECT meter_id, supplier, MAX(end_date) end_date
    FROM contract 
    GROUP BY meter_id, supplier
) a
JOIN contract c ON c.meter_id = a.meter_id AND a.end_date = c.end_date
JOIN meter m ON m.meter-id = c.meter_id
JOIN invoice i ON i.contract_id = c.id
Run Code Online (Sandbox Code Playgroud)