一些背景说明:
我有一些表格,想要获取每个职位的最低日期。
一个职位有多个存储日期的部门。
样品:
位置1具有
部门日期1:30.05.2019,
部门日期2:01.06.2019,
部门日期3:05.06.2019 ....等等
我在获取以下输出中的UniqueIdentifier列id_abteilungen时遇到问题:
用于获得上述结果的查询是这样的:
SQL
SELECT tbl_Auftrag.Auftragsnummer
, tbl_Positionen.Bezeichnung
, MIN(tbl_Positionen_Abteilungen.Abteilungstermin) AS Abteilungstermin
FROM tbl_Auftrag
INNER JOIN tbl_Positionen
ON tbl_Auftrag.auftrag_id = tbl_Positionen.id_auftrag
INNER JOIN tbl_Positionen_Abteilungen
ON tbl_Positionen.positionen_id = tbl_Positionen_Abteilungen.id_positionen
WHERE tbl_Positionen_Abteilungen.fertiggestellt = '0'
GROUP BY tbl_Positionen_Abteilungen.id_positionen
, tbl_Auftrag.Auftragsnummer
, tbl_Positionen.Bezeichnung
要获得此结果,我需要GROUP BY id_positionen。
我一试到GROUP BY id_positionen,id_abteilungen
结果将再次显示所有部门的所有职位及其日期。
Output with GROUP BY id_positionen, id_abteilungen
获得的结果必须是这样,但我根本不知道如何获得这个结果:
如果对表以及主键和外键有疑问,或者您需要了解其他内容,请随时提问。我需要的只是正确的查询,以获取在位置中找到的每个最低日期的id_abteilungen唯一标识符,以及查询结果结果中显示的其他列。
答案 0 :(得分:0)
您不应该在分组依据中使用tbl_Positionen_Abteilungen.id_positionen
取而代之的是,您应该选择将结果加入最小Abteilungstermin
select *
FROM tbl_Auftrag
INNER JOIN tbl_Positionen ON tbl_Auftrag.auftrag_id = tbl_Positionen.id_auftrag
INNER JOIN tbl_Positionen_Abteilungen ON tbl_Positionen.positionen_id = tbl_Positionen_Abteilungen.id_positionen
INNER JOIN (
SELECT tbl_Auftrag.Auftragsnummer
, tbl_Positionen.Bezeichnung
, MIN(tbl_Positionen_Abteilungen.Abteilungstermin) AS Abteilungstermin
FROM tbl_Auftrag
INNER JOIN tbl_Positionen ON tbl_Auftrag.auftrag_id = tbl_Positionen.id_auftrag
INNER JOIN tbl_Positionen_Abteilungen ON tbl_Positionen.positionen_id = tbl_Positionen_Abteilungen.id_positionen
WHERE tbl_Positionen_Abteilungen.fertiggestellt = '0'
GROUP BY tbl_Auftrag.Auftragsnummer, tbl_Positionen.Bezeichnung
) t on t.Auftragsnummer = tbl_Auftrag.Auftragsnummer
and t.Bezeichnung = tbl_Positionen.Bezeichnung
and t.Abteilungstermin = tbl_Positionen_Abteilungen.Abteilungstermin
WHERE tbl_Positionen_Abteilungen.fertiggestellt = '0'