zwei SELECTs zusammenführen
hallo zusammen,
ich sitze nun schon einige Zeit vor einem Problem, an dem mir der letzte Schritt fehlt - sofern ich nicht in einer Sackgasse gelandet bin. Folgende Datenbankstruktur liegt vor
# Beitrags-Kategorien
id, bezeichnung
// Diese db enthält unter Bezeichnung Einträge zur Kategorisierung von Beiträgen
Bsp: 1, Sport;
2, Musik usw ...
# Beiträge
id, autor, inhalt, kategorie
// Diese db enhält nun die eigentlichen Beiträge, wobei unter Kategorie jeweils die id aus obiger db geführt wird
Bsp: 1, Hans, Mein neues Mountainbike ... , 1;
2, Hans, Meine neue Gitarre ..., 2
# Bewertung
id, bewerter, bewerteter_beitrag, bewertung
// Diese db enthält Bewertungen für die Beiträge. Dabei sind z.B. 3 Bewertungen für den Beitrag mit der id = 1 vorhanden:
1, Max, 1, 5;
2, Julia, 1, 4;
3, Siggi, 1, 5;
momentan habe ich nun zwei von einander getrennte SELECTs, die ich aber eigentlich zusammenführen will / muss:
SELECT 1:
SELECT Beiträge. * , Beitrags_Kategorien.bezeichnung
FROM Beiträge
LEFT JOIN Beitrag_Kategorien ON Beiträge.kategorie = Beitrags_Kategorien.id;
// Diese Abfrage liefert mir nun also alle Beiträge mit der passenden nach Namen aufgelösten Kategorie-Bezeichnung
SELECT 2:
SELECT bewerteter_beitrag,
ROUND( ( SUM( bewertung ) / COUNT( * ) ) , 0)
FROM Bewertung
GROUP BY bewerteter_beitrag
// Diese Abfrage sucht nun in der Bewertung-db nach allen Einträgen, die den Beitrag mit der id = x bewerten, addiert alle Bewertungen auf und dividiert durch die Anzahl der Bewertungen. Im Beispiel: Es würden die Bewertungen von Max, Julia und Siggi gefunden werden, die Werte addiert (=14) und durch die Anzahl (=3) dividiert. Somit ergibt sich eine Bewertung von in Summe 14 / 3 = 5 (wg. ROUND)
Diese beiden Abfragen laufen nun super jeweils für sich allein, nur steh ich im Moment vor dem Problem beides zu kombinieren, falls das überhaupt geht. Die Ideal-Ausgabe wäre dann also: [nochmals Erklärungen zu den Feldern]
1 [beitrags id], Hans, Mein neues Mountainbike ... , 1 [Kategorie id], 5 [Bewertung];
Habt ihr eine Idee wie ich das hinbekommen könnte?
|