Philipp Hasenfratz: Nur n-Einträge bei jeder ID

Beitrag lesen

select * from automarken, autofarben where automarken.id = autofarben.idautomarken

Soweit alles klar. Jetzt kann ich aber als User sagen wieviel Ergebnis ich PRO Automarken haben möchte. Dh. ich möchte immer nur die ersten 2 Ergebnisse, das würde beim VW heißen, das beim Ergebnis SILBER rausfällt und beim Mercedes BLAU und ROT.

Hat da jemand einen Tipp für mich? Muss ich das über eine gespeicherte Prozedur und einem Cursor machen?

Mit einer gespeicherten Prozedur funktioniert es sicher. Leider könnte ich dir bei der nicht helfen, da ich noch nie eine verwendet habe.

Aber mit Subqueries (MS-SQL unterstützt diese, wenn ich recht informiert bin):

SELECT * FROM Automarken AS AM, Autofarben AS AF WHERE
   AM.ID=AF.IDAutomarken AND AF.ID IN
   ( SELECT ID FROM Autofarben WHERE IDAutomarken=AF.IDAutomarken LIMIT 0, 2 )
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
                                     Hier könnte ein Fehler entstehen

Vielleicht funktioniert das nicht, weil die aktuelle AF.IDAutomarken nicht einfach in den Subquery übernommen werden kann, Wissen tue ich's aber nicht!

bin mir nicht sicher, ob das funktioniert, da ich es nicht testen kann (mysql unterstützt keine Subqueries). Kannst es ja mal versuchen.

Viele Grüsse

Philipp