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