You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Monday, March 5th 2007, 4:08pm

Problem beim SELECT formulieren

Ich hab zwei Tabellen:

1. beitrag(bid, beitrag)
2. ratings(bid, rating);

Das rating geht von 1-5

Jetzt hab ich beispielsweise folgende Einträge:

beitrag

0, "Erster Beitrag"
1, "Zweiter Beitrag"
2, "Dritter Beitrag"


ratings
0, 5
0, 3
1,4


Nun möchte ich den Durchschnitt der Bewertungen für jeden Beitrag auslesen, was ich so machen würde:

SELECT b.beitrag, AVG(r.rating)
FROM beitrag b, ratings r
WHERE r.bid = b.bid
GROUP BY b.bid

Aber jetzt werden die Beiträge, die noch kein Rating haben nicht angezeigt, das möchte ich aber gerne.

2

Monday, March 5th 2007, 4:56pm

Es gibts ja nicht nur Cross-Joins auf der Welt ;-)

SQL Code

1
2
3
4
SELECT b.beitrag, AVG( r.rating )
FROM beitrag b
LEFT JOIN ratings r ON b.bid = r.bid
GROUP BY b.bid


Hast du deine Tabelle eigentlich abstrahiert, oder ist die wirklich so klein?
Dann würde ich nämlich noch einen Primary Key in der Ratings Tabelle einführen.

Tagging

Social bookmarks