0

我有这个查询,但结果是错误的。

我如何使用min()statement 和Group byStatement 以便我将得到每个AthletenID最低的DiszOrder

Select 
    ar_Leistungen.`AthletenID`,
    ar_Leistungen.`Leistung`,
    ar_Leistungen.`Disziplin`,
    ar_Leistungen.`Klasse`,
    min(ar_Leistungen.`DiszOrder`),
    ar_Athleten.`Vorname`,
    ar_Athleten.`Jahrgang`,
    ar_Wettkampf.`Wettkampfdatum`
from 
    ar_Leistungen, 
    ar_Athleten, 
    ar_Wettkampf
Where
    ar_Athleten.ID = ar_Leistungen.AthletenID and
    ar_Leistungen.WettkampfID = ar_Wettkampf.ID and
    ar_Leistungen.`Disziplin` = '100' and 
    ar_Leistungen.`Leistung` > 0 and 
    (ar_Athleten.`Jahrgang` = '1995' or ar_Athleten.`Jahrgang` = '1994') and
    ar_Wettkampf.`Wettkampfdatum` LIKE '%2013%'
Group By
    AthletenID
Order by
    DiszOrder Desc
Limit
    0, 100
4

1 回答 1

0

DiszOrder您可以有一个子查询,它分别为每个查询获取最低值AthletenID并将其与另一个表连接,这样您就可以自由地获取列的其他值。

SELECT  a.AthletenID,
        a.Leistung,
        a.Disziplin,
        ar_Leistungen.Klasse,
        a.DiszOrder),
        b.Vorname,
        b.Jahrgang,
        c.Wettkampfdatum
FROM    ar_Leistungen a
        INNER JOIN ar_Athleten b
            ON b.ID = a.AthletenID
        INNER JOIN ar_Wettkampf c
            ON a.WettkampfID = c.ID
        INNER JOIN
        (
            SELECT  AthletenID, MIN(DiszOrder) DiszOrder
            FROM    ar_Leistungen
            GROUP   BY AthletenID
        ) d ON a.AthletenID = d.AthletenID AND
                a.DiszOrder = d.DiszOrder
WHERE   a.Disziplin = '100' AND 
        a.Leistung > 0 AND 
        (b.Jahrgang IN ('1995', '1994'))
于 2013-09-22T18:47:30.860 回答