MySQL Frage zu GROUP BY

Hallo,

ich habe zwei Tabellen: jahre und buecher.

In der Tabelle jahre gibt es die Spalte jahr, in buecher die Spalte erscheinungsjahr.

Ich möchte nun mittels SELECT zu jedem Jahr aus jahre wissen, wieviele Bücher in diesem Jahr erschienen sind.

Und obendrein möchte ich diesen SELECT noch nach der Anzahl der erschienenen Bücher ordnen.

Ich habe schon ein wenig mit GROUP BY rumprobiert, ohne Erfolge.

-) Danke, Jens.

Hi

Zuerst eine Frage: Wieso hast Du die Jahre in eine separate Tabelle ausgelagert. Mit Primär- und Fremdschlüssel hast Du nachher mehr Daten, als wenn Du sie direkt in die Bücher-Tabelle genommen hättest. Und das wäre sicher nicht unter Redundanzen gegangen (OK, in der x. Normalform vielleicht… :smile:)

Aber nun zum Statement

SELECT Jahr, (SELECT COUNT(Buecher\_ID) FROM tabBuecher WHERE tabBuecher.Jahr\_ID = tabJahre.Jahr\_ID) AS AnzahlBuecher FROM tabJahre ORDER BY AnzahlBuecher

(Kenne natürlich Deine genauen Tabellen- und Feldbezeichnungen nicht, hoffe aber, Du kannst Dir das denken :smile:)

Greetz Sherman

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

erstmal danke für Deine schnelle Antwort.

Zuerst eine Frage: Wieso hast Du die Jahre in eine separate
Tabelle ausgelagert? Mit Primär- und Fremdschlüssel hast Du
nachher mehr Daten, als wenn Du sie direkt in die
Bücher-Tabelle genommen hättest.

Berechtigte Frage. Allerdings habe ich zu jedem Jahr noch ein paar zusätzliche Infos gespeichert, wie politische Ereignisse usw… Hätte ich diese Ereignisse in die Tabelle Bücher zu jedem Jahr genommen, hätte ich viel mehr Daten gehabt als mit 2 Tabellen. Außerdem hätte mich jeder Normalformverfechter geohrfeigt. :smile:)

Aber nun zum Statement

SELECT Jahr, (SELECT COUNT(Buecher_ID) FROM tabBuecher
WHERE tabBuecher.Jahr_ID = tabJahre.Jahr_ID) AS AnzahlBuecher
FROM tabJahre ORDER BY AnzahlBuecher

Hmmm. Ein Unter-SELECT in MySQL? Geht denn das? Ich bin mir da gar nicht so sicher. Werde gleich mal nachschauen.

-) Gruss, Jens

Hi…

Berechtigte Frage. Allerdings habe ich zu jedem Jahr noch ein
paar zusätzliche Infos gespeichert, wie politische Ereignisse
usw… Hätte ich diese Ereignisse in die Tabelle Bücher zu
jedem Jahr genommen, hätte ich viel mehr Daten gehabt als mit
2 Tabellen. Außerdem hätte mich jeder Normalformverfechter
geohrfeigt. :smile:)

OK, wenn Du weitere Daten zum Jahr gespeichert hast, ist der Fall klar!

Hmmm. Ein Unter-SELECT in MySQL? Geht denn das? Ich bin mir da
gar nicht so sicher. Werde gleich mal nachschauen.

Praktisch habe ich das noch nie ausprobiert (habe noch nie mit MySQL gearbeitet), hoffe aber schon, dass das unterstütz wird!
Bei MS SQL funktionierts 100%ig.

Greetz Sherman

So geht es.
Hallo,

ich habs raus! In MySQL funktioniert es folgendermaßen:

SELECT jahre.jahr, count(jahre.jahr) AS zaehler FROM jahre LEFT JOIN buecher ON jahre.jahr=buecher.erscheinungsjahr GROUP BY jahre.jahr ORDER BY zaehler

-) Gruss