我希望用最新的idStavZakazky选择表zakazka中的所有行。怎么弄? EER图表:
轻松离开后加入
SELECT `zakazka`.`idZakazka`,
`stavzakazky`.`idStavZakazky`,
`stavzakazky`.`Zakazka_idZakazka`,
`seznamstavu`.`Nazev`
FROM `autoservis`.`zakazka`
LEFT JOIN `autoservis`.`stavzakazky` ON `zakazka`.`idZakazka` = `stavzakazky`.`Zakazka_idZakazka`
LEFT JOIN `autoservis`.`seznamstavu` ON `stavzakazky`.`SeznamStavu_idSeznamStavu` = `seznamstavu`.`idSeznamStavu`
ORDER BY `zakazka`.`idZakazka`;
输出:
idZakazka|idStavZakazky|Zakazka_idZakazka|Nazev
_____________________________________________________
1| 2| 1|Založeno
_____________________________________________________
1| 3| 1|Přiřazeno
_____________________________________________________
2| 4| 2|Pozastavená
_____________________________________________________
2| 5| 2|Přiřazeno
但我想要这样的结果,只显示最新的idStavZakazky
idZakazka|idStavZakazky|Zakazka_idZakazka|Nazev
_____________________________________________________
1| 3| 1|Přiřazeno
_____________________________________________________
2| 5| 2|Přiřazeno
答案 0 :(得分:1)
您可以在idStavZakazky
表格中找到每个Zakazka_idZakazkam
的最大stavzakazky
,然后找到原始表格中的相应行(因为您需要Nazev
列),然后做左边加入。
像这样:
select zakazka.idZakazka,
stavzakazky.idStavZakazky,
stavzakazky.Zakazka_idZakazka,
seznamstavu.Nazev
from autoservis.zakazka
left join (
select *
from autoservis.stavzakazky
join (
select Zakazka_idZakazkam, max(idStavZakazky) as idStavZakazky
from autoservis.stavzakazky
group by Zakazka_idZakazkam
) t using (Zakazka_idZakazkam, idStavZakazky)
) stavzakazky on zakazka.idZakazka = stavzakazky.Zakazka_idZakazka
left join autoservis.seznamstavu on stavzakazky.SeznamStavu_idSeznamStavu = seznamstavu.idSeznamStavu
order by zakazka.idZakazka;