Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL dołącza do tej samej tabeli dwa razy w tej samej kolumnie z inną wartością, zwracając tylko ostatni wiersz

Wypróbuj

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

Wyjście:

| ID |                              ADDRESS |     STATUS | CONTRACT_PRICE | CONTRACT_DATE | ESTIMATE_VALUE | ESTIMATE_DATE |
----------------------------------------------------------------------------------------------------------------------------
|  1 | 27 TAYLOR ROAD, ALBION PARK NSW 2527 | InProgress |         140000 |    2013-01-03 |         145000 |    2013-02-09 |

Oto SQLFiddle demo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy urlencode() jest wystarczająco dobry, aby powstrzymać wszystkie ataki typu SQL injection w roku 2011?

  2. MySQL:Wybierz poprzedni miesiąc i miesiąc przed

  3. Uniemożliwić dwóm użytkownikom edytowanie tych samych danych

  4. mysql zapytanie do dopasowania zdania do słów kluczowych w polu

  5. jak zainstalować mysqli na serwerze Windows iis?