2017-07-25 74 views
0

我从一些表中获得价值的问题。你可以看到下面的图片,我想用红色来排列我所阻挡的东西。 enter image description here从INNER JOIN获取价值3表中每个表的最新记录

我尝试用下面的代码

SELECT p.id, 
     p.email, 
     p.name, 
     p.lastname, 
     p.gender, 
     ex.startwork, 
     ex.endwork, 
     e.degree, 
     e.majority, 
     j.division 
FROM job_jobseeker AS p 
     INNER JOIN job_experience AS ex 
       ON p.email = (SELECT ex.email 
          FROM job_experience 
          ORDER BY ex.id DESC 
          LIMIT 1) 
     INNER JOIN job_education AS e 
       ON p.email = (SELECT e.email 
          FROM job_education 
          ORDER BY ex.id DESC 
          LIMIT 1) 
     INNER JOIN job_applying AS j 
       ON p.email = (SELECT j.email 
          FROM job_applying 
          ORDER BY ex.id DESC 
          LIMIT 1) 

回答

1

你需要correlated sub-queries

找到每个email最新id所有三个表

SELECT startwork, 
     endwork, 
     email 
FROM job_experience a 
WHERE a.id = (SELECT Max(b.id) 
       FROM job_experience b 
       WHERE a.email = b.email) 

上面的查询中找到每个邮件最新的ID在job_experience表。对其他两个表格也做同样的事情,然后将结果与job_jobseeker表格结合起来得到结果。

SELECT p.id, 
     p.email, 
     p.name, 
     p.lastname, 
     p.gender, 
     ex.startwork, 
     ex.endwork, 
     e.degree, 
     e.majority, 
     j.division 
FROM job_jobseeker AS p 
     INNER JOIN (SELECT startwork, 
          endwork, 
          email 
        FROM job_experience a 
        WHERE a.id = (SELECT Max(b.id) FROM job_experience b 
            WHERE a.email = b.email)) AS ex 
       ON p.email = ex.email 
     INNER JOIN (SELECT email, //Just called column without initialize 
          degree, 
          majority 
        FROM job_education a 
        WHERE a.id = (SELECT Max(b.id) FROM job_education b 
            WHERE a.email = b.email)) AS e 
       ON p.email = e.email 
     INNER JOIN (SELECT email, //Just called column without initialize 
          division 
        FROM job_applying a 
        WHERE a.id = (SELECT Max(b.id) FROM job_applying b 
            WHERE a.email = b.email)) AS j 
       ON p.email = j.email 
+0

我编辑了一些您的代码,但它的工作原理...感谢您的高级 – bramadwitra