Jetzt habe ich folgendes Query:
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.
Frage: Woher weiß die Datenbank, daß bei VW rot und blau die ERSTEN beiden Ergebnisse sind? Solange da kein Ordnungsindex reinkommt, kannst du wohl nur sicher sein, daß IRGENDZWEI Farben die ersten sind. Es fehlt bei den Farben an einem Primärschlüssel (ich meine, ich habe zwar keine große Ahnung von Datenbanken, aber ein eindeutiger Schlüssel ist nie verkehrt). Deine Fragestellung ist mir aber klar...
Hat da jemand einen Tipp für mich? Muss ich das über eine gespeicherte Prozedur und einem Cursor machen?
Ich kenne mySQL, aber mir fällt folgender Ansatz ein:
Du gibst jeder Farbe noch einen Farbindex mit, der die Anzahl der Farben in der Tabelle zählt. Also
ID Farbe Farbindex
1 - rot - 1
1 - blau - 2
1 - silber - 3
2 - schwarz - 1
2 - rosa - 2
3 - blau - 1
3 - schwarz - 2
3 - blau - 3
3 - rot - 4
select * from automarken, autofarben where automarken.id = autofarben.idautomarken AND autofarben.farbindex <= 2 ORDER BY autofarben.farbindex
Alternativ generierst du den Zähler (irgendwie mit COUNT) beim Query selbst.
- Sven Rautenberg