如何将请求的结果连接到另一个表(添加列)

问题描述 投票:0回答:3

编辑

我有两个表:etape和etapex。

enter image description here

enter image description here

我需要找到每个idetape的最大idprojet(在表etapex中,并在表etape中将“ idetape”和“ idprojet”链接到“ nometape”和“ livrable”。

所以我尝试了两件事:

SELECT etapexprojet.idEtape, idProjet, nometape, livrable
FROM etape, etapexprojet
WHERE etapexprojet.idetape = (SELECT MAX(etape.idetape) FROM etapexprojet )

不幸的是,这就是我得到的:

enter image description here

这是我的另一个“解决方案:第一步是找到最大值(我不想使用group by):

SELECT EX.idEtape
FROM etapexprojet EX                   
LEFT JOIN etapexprojet EX2       
  ON EX.idprojet = EX2.idprojet 
  AND EX.idetape < EX2.idetape
WHERE EX2.idetape IS NULL

但是现在我陷入了困境,我不知道如何将我从第一个请求中获得的东西加入到表etape中。

最后,它应该给我类似的东西:

enter image description here

但是还有'nomEtape'和'livrable'的专栏...

感谢您的帮助!

mysql sql join max greatest-n-per-group
3个回答
0
投票
SELECT E.*, EX.idProjet FROM etape E JOIN etapexprojet EX ON EX.idEtape = E.idEtape LEFT JOIN etapexprojet EX2 ON EX.idprojet = EX2.idprojet AND EX.idetape < EX2.idetape WHERE EX2.idetape IS NULL

0
投票
SELECT ET.idEtape, ETX.idProjet, ET.nomEtape, ET.livrable FROM etape ET LEFT JOIN etapexprojet ETX ON ET.idEtape = ETX.idEtape WHERE ETX.idProjet = (SELECT MAX(idProjet) FROM etapexprojet WHERE idEtape = ET.idEtape);

注意:我认为您的输出示例是错误的,因为idEtape = 4的最大idprojet为2而不是1。

© www.soinside.com 2019 - 2024. All rights reserved.