Mysql: top 3 einer gruppierung

Hallo an alle,

ich stecke bei einer Query fest:
Ich habe einen Join mit mehreren Where clauses und für das Resultset einer where - clause benötige ich nur die ersten 3 Einträge.

Der Einfachheit halber ein Beispiel:

Select c.id, c.gruppe, c.datum, c.bild, c.online, c.aktiv
from cms c
where datum >= heute … etc
and (c.aktiv=1 and c.gruppe =„news“ or c.gruppe=„aktion“)
order by d.datum desc

dies ergibt ein Resultset von sagen wir
14 Einträgen,
9 davon sind news
5 sind aktion

ich brauche aber nur jeweils die ersten 3 Einträge von News und Aktion

mit Group by und having count hatte ich keinen Erfolg.

Hoffe jemand hat eine Idee wie man das lösen kann.

Danke und lg
aya

Ginge z.B. so:

SELECT * FROM
(

   SELECT TOP 3 
          c.id
        , c.gruppe
        , c.datum
        , c.bild
        , c.online
        , c.aktiv
     FROM cms c 
    WHERE datum >= heute ..... etc 
      AND c.aktiv = 1 
      AND c.gruppe = 'news'
 ORDER BY c.datum DESC
 
 UNION
 
    SELECT TOP 3 
           c.id
         , c.gruppe
         , c.datum
         , c.bild
         , c.online
         , c.aktiv
      FROM cms c 
     WHERE datum >= heute ..... etc 
       AND c.aktiv = 1 
       AND c.gruppe = 'aktion'
  ORDER BY c.datum DESC
) AS tmp

ORDER BY tmp.datum DESC

*wink
KHK

Super ! Danke für die rasche AW.

Leider funktioniert TOP nicht ?? :frowning:
Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '3

Mit was für einer Datenbank arbeitest Du denn?
SQL Server? Oracle? MySQL?

https://www.w3schools.com/sql/sql_top.asp

mysql 5.6.35

und ich versteh es auch nicht

hier ein real beispiel

SELECT TOP 5 id
FROM cms
WHERE cms.cms = „news“ LIMIT 0, 25

MySQL meldet: 

#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '5 id

FROM cms

WHERE cms.cms = „news“ LIMIT 0, 25’ in Zeile 1

PS: rownum funktioniert auch nicht

SELECT * FROM cms
WHERE ROWNUM <= 3 LIMIT 0, 25

MySQL meldet: 

#1054 - Unbekanntes Tabellenfeld ‚ROWNUM‘ in where clause

Wenn MySQL das schon vorschlägt, wär ja „im Handbuch nachschlagen“ ne Maßnahme… :wink:

Danke Dir für die Mühe!!!
mit Limit ließ sich das Problem aber nicht lösen, da es ja um eine Gruppierung ging.

lg
aya