左外连接处的最大条件

TjJ*_*ior 5 mysql

----------
samples
----------
SamplesID
stylenumber
stylename
status

-----------
samples_details
-----------
Samples_Details_ID
SamplesID
CustomerName
date_out
date_returned
updated (timestamp)
status

------------
samples_pictures
------------
SamplesPicID
SamplesID
Run Code Online (Sandbox Code Playgroud)

尝试编写一个查询,该查询为我提供了示例的所有行,samples_pictures的所有匹配项(如果有)以及samples_details的最新记录(如果有)。因此,有两个左外部联接,但一个仅检索最新记录。

什么不起作用:

SELECT samples.*
     , samples_pictures.SamplesPicID
     , CustomerName
     , date_out
     , date_returned
     , updated
     , samples_details.status as txn_status 
FROM samples 
    LEFT OUTER JOIN
      ( SELECT Samples_Details_ID
             , samples_details.status as txn_status
             , MAX(updated) as MaxUpdated
        FROM samples_details
        GROUP BY Samples_Details_ID
      ) AS MaxTable
      ON MaxTable.SamplesID = samples.SamplesID 
    LEFT OUTER JOIN samples_pictures
      ON samples.SamplesID = samples_pictures.SamplesID
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

dgi*_*and 1

SamplesID您的 select 语句中没有MaxTable. 应该:

SELECT samples.*, samples_pictures.SamplesPicID, CustomerName, date_out, 
date_returned, updated, samples_details.status as txn_status 
FROM samples 
    LEFT OUTER JOIN (SELECT SamplesID, Samples_Details_ID, samples_details.status as txn_status, 
    MAX(updated) as MaxUpdated FROM samples_details GROUP BY Samples_Details_ID) 
    AS MaxTable ON MaxTable.SamplesID = samples.SamplesID 
LEFT OUTER JOIN samples_pictures ON samples.SamplesID = samples_pictures.SamplesID
Run Code Online (Sandbox Code Playgroud)