Axel Richter: (MySQL) Tabellen verknüpfen?

Beitrag lesen

Hallo,

Die Abfrage hat schon Sinn.
In Tabelle 1 stehen IDs mit zusätzlichem Text o.ä.
In Tabelle 2 stehen die Details zu den IDs.
Ich möchte auslesen, wie oft jede ID in Tabelle 1 vorkommt und sie dann absteigend nach der Anzahl geordnet mit den Details ausgeben.

Ja, das mit der Anzahl hatte ich übersehen. Tabellenaufbau und -inhalt wie im ersten Posting:

SELECT Tabelle1.ID, Tabelle2.Details, Count(Tabelle1.ID) AS anz
FROM Tabelle1 RIGHT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.ID
GROUP BY Tabelle1.ID, Tabelle2.Details
ORDER BY Count(Tabelle1.ID) DESC;

ID   Details    anz
1    Detail1    4
4    Detail4    2
3    Detail3    1
     Detail5    0
     Detail2    0

Erläuterugen:
SELECT Tabelle1.ID, Tabelle2.Details, Count(Tabelle1.ID) AS anz
--Wähle die Spalten Tabelle1.ID, Tabelle2.Details und die Anzahl gleicher Tabelle1.ID als Feld mit dem alias "anz",

FROM Tabelle1 RIGHT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.ID
--von Tabelle1(LEFT), verbunden mit Tabelle2(RIGHT) durch die Regel Tabelle1.ID = Tabelle2.ID, wobei die rechte(RIGHT) Seite(Tabelle2.ID) in jedem Fall angezeigt werden muss.

GROUP BY Tabelle1.ID, Tabelle2.Details
--fasse Datensätze mit gleichen Werten in Tabelle1.ID und Tabelle2.Details zusammen. Das ist notwendig für das Zählen(Count).

ORDER BY Count(Tabelle1.ID) DESC;
--sortiere das Ergebnis absteigend nach der ermittelten Anzahl.

Um das mit LEFT- bzw. RIGHT JOIN zu verdeutlichen:

SELECT Tabelle1.ID, Tabelle2.Details, Count(Tabelle1.ID) AS anz
FROM Tabelle2 LEFT JOIN Tabelle1 ON Tabelle1.ID = Tabelle2.ID
GROUP BY Tabelle1.ID, Tabelle2.Details
ORDER BY Count(Tabelle1.ID) DESC;

ergibt das selbe Ergebnis.

viele Grüße

Axel