我有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)
我该怎么做呢?是通过嵌套选择还是什么?谢谢
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)
| 归档时间: |
|
| 查看次数: |
1920 次 |
| 最近记录: |