Laden...

Problem bei Bewertungs-Script

Erstellt von Nightline vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.060 Views
N
Nightline Themenstarter:in
49 Beiträge seit 2005
vor 18 Jahren
Problem bei Bewertungs-Script

Hallo,

ich erstelle derzeit ein Bewertungs-Script für Filme. Dabei habe ich folgende zwei Tabellen:

BEWERTUNG
*ratingID
rating
ip
filmID

FILME
*filmID
titel
bild

Mein Problem ist nun, dass ich auf einer aspx-Seite gerne eine Liste (mittels DataList) aller Filme inklusive der Bewertungen ausgeben möchte, ich aber nicht weiß, wie ich die Daten am effizientesten aus der DB (MS SQL Server) bekomme.
Wenn ich einen Film pro Seite anzeigen will, dann kann ich ja leicht über die ID nur die Infos des betroffenen Films auswählen. Bei einer DataList kann ich das aber nicht, oder? Wie soll ich dann also zu jedem Film die dazugehörigen Bewertungen rausholen?

Steh in der Sache derzeit ziemlich am Schlauch. 😉

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo Nightline,

das Stichwort wäre hier wohl JOIN 😉

Der dazugehörige SQL-Befehl würde dann so aussehen (ungetestet):



SELECT 
   F.filmID, F.titel, F.bild, B.ratingID, B.rating, B.ip
FROM 
   (FILME AS F INNER JOIN BEWERTUNG AS B ON F.filmID=B.filmID)
WHERE 
   mEiNeBeDiNgUnG;


Hier muss halt irgendeine Bedingung her, oder wenn Du die Bedingung weglässt, dann erhälst Du alle Filminformationen, die in den Ratings enthalten sind. Das ist jetzt etwas was Du entscheiden musst.

Hoffe, das hilft Dir?

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

N
Nightline Themenstarter:in
49 Beiträge seit 2005
vor 18 Jahren

Naja, hilft leider nicht. 😉

Ich benötige von beiden Tabellen unterschiedliche Infos:

Command-String Filme:
SELECT * FROM filme // Alle Filme mit Titel und Bild auswählen

Command-String Bewertung:
SELECT SUM(rating), COUNT(*) FROM bewertung WHERE filmID = @filmID //Anzahl aller Stimmen und Summe der Bewertungen für einen Film

Wie du siehst benötige ich hier zwei Abfragen, was ja kein Problem ist, solange ich EINEN Film auf EINER Seite anzeige. Da kann ich ja einfach zwei DataReader-Objekte nehmen und die Infos rausholen.

ABER:
Wenn ich nun ALLE Filme als Liste anzeigen will, dann muss ich dem DataList-Objekt ein DataSet zuweisen, in dem bereits alle benötigten Infos drinnen stehen. Das heißt ich bräuchte einen statt zwei Command-Strings.

Hoffe ich habe mich nun klarer ausgedrückt. 🙂

D
155 Beiträge seit 2005
vor 18 Jahren

Nein, brauchst du nicht!

SELECT titel, bild, ip, rating
FROM Bewertung
INNER JOIN Filme
ON Bewertung.filmID = Filme.filmID;

gibt alle Filme UND alle Bewertungen aus.
Für alle Filme mit Bewertung oder keiner Bewertung musst du dann LEFT JOIN anstelle von INNER JOIN nehmen.

N
Nightline Themenstarter:in
49 Beiträge seit 2005
vor 18 Jahren

Stimmt, gibt mir alle aus. Leider benötige ich nicht jede einzelne Bewertung, sondern eben die Summe und die Anzahl für jeden Film. Wenn ich also für einen Film 50 Stimmen habe, dann interessiert mich nur die Summe der Stimmen und dass es eben 50 Stück sind.

Also leider auch nicht die Lösung, aber trotzdem Danke!

D
155 Beiträge seit 2005
vor 18 Jahren

SELECT title, SUM(rating)
FROM Bewertung
INNER JOIN Filme
ON Bewertung.filmID = Filme.filmID
GROUP BY title, rating;

N
Nightline Themenstarter:in
49 Beiträge seit 2005
vor 18 Jahren

Funkt! 🙂
Geht ja doch einfacher als ich dachte... Vielen Dank!!

Falls noch Schwierigkeiten auftauchen meld ich mich nochmals hier.

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo zusammen,

dann bin ich ja beruhigt, dann war ich mit meinem Ansatz ja nicht verkehrt 😉

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”