sql >> Database teknologi >  >> RDS >> Mysql

MySQL forbinder samme tabel to gange i samme kolonne med en anden værdi, der kun returnerer den seneste række

Prøv

SELECT i.id, i.address, i.status, p.max_date contract_date, p.basis_value contract_price, e.max_date estimate_date, e.basis_value estimate_value FROM Instructions i LEFT JOIN ( SELECT q1.instruction_id, max_date, basis_value FROM Estimates e JOIN ( SELECT instruction_id, MAX(basis_date) max_date FROM Estimates WHERE basis = 'CustomerEstimate' GROUP BY instruction_id ) q1 ON e.instruction_id = q1.instruction_id AND e.basis_date = q1.max_date ) e ON i.id = e.instruction_id LEFT JOIN ( SELECT q2.instruction_id, max_date, basis_value FROM Estimates e JOIN ( SELECT instruction_id, MAX(basis_date) max_date FROM Estimates WHERE basis = 'ContractPrice' GROUP BY instruction_id ) q2 ON e.instruction_id = q2.instruction_id AND e.basis_date = q2.max_date ) p ON i.id = p.instruction_id

Output:

| ID | ADRESSE | STATUS | CONTRACT_PRICE | CONTRACT_DATE | ESTIMATE_VALUE | ESTIMATE_DATE |------------------------------------------------ -------------------------------------------------- --------------------------| 1 | 27 TAYLOR ROAD, ALBION PARK NSW 2527 | Igangværende | 140.000 | 03-01-2013 | 145000 | 2013-02-09 |

Her er SQLFiddle demo.



  1. MySQL fuldtekstsøgning på flere tabeller med forskellige felter

  2. Tæller flere rækker i MySQL i én forespørgsel

  3. Sådan importeres en database ved hjælp af phpMyAdmin

  4. Hvordan kan jeg forbinde flere SQL-tabeller ved hjælp af ID'erne?