Komplizierter Join

Thomas D

Erfahrenes Mitglied
EDIT: Hat sich erledigt! Der Join macht schon das richtige. Ich habe nur die zurückgegebenen Daten falsch interpretiert ...

Hallo!

Ich habe eine SQL-Abfrage, die wie folgt aussieht

Code:
SELECT username, SUM(prioritaet) punkte
	FROM tipp t, matchtable m, user u
	WHERE
		t.matchid = m.matchid AND
		t.tipp = m.ergebnis AND
		u.userid = t.userid AND
		m.eventid = 1
	GROUP BY t.userid
	ORDER BY punkte DESC

Der fett geschriebene Teil soll eigentlich gewährleisten, dass nur jene Events herangezogen werden, die die ID 1 haben. Nur leider scheint diese Auswahl ignoriert zu werden.

Die beteiligten Tabellen sehen wie folgt aus:

Code:
tipp (
	userid INT(5) NOT NULL,
	matchid INT(6) NOT NULL,
	tipp INT(2) UNSIGNED NOT NULL,
	prioritaet INT(2) SIGNED NOT NULL,
	...
	CONSTRAINT FK_tipp_user FOREIGN KEY (userid)
			REFERENCES user (userid)
			ON UPDATE CASCADE
			ON DELETE CASCADE,
	CONSTRAINT FK_tipp_match FOREIGN KEY (matchid)
			REFERENCES matchtable (matchid)
			ON UPDATE CASCADE
			ON DELETE CASCADE);

CREATE TABLE user (
	userid INT(5) AUTO_INCREMENT NOT NULL,
	username VARCHAR(50) NOT NULL UNIQUE
	...)

CREATE TABLE matchtable (
	matchid INT(6) AUTO_INCREMENT NOT NULL,
	matchcode VARCHAR(255) NOT NULL,
	eventid INT(5) NOT NULL,
	stipulationid INT(5) NULL,
	titelmatchid INT(3) NULL,
	anmerkungen TEXT NULL,
	ergebnis INT(5) NOT NULL DEFAULT 0,
	CONSTRAINT PK_match PRIMARY KEY (matchid),
	CONSTRAINT FK_match_event FOREIGN KEY (eventid)
			REFERENCES event (eventid)
			ON UPDATE CASCADE
			ON DELETE RESTRICT,
	CONSTRAINT FK_match_stipulation FOREIGN KEY (stipulationid)
			REFERENCES stipulation (stipulationid)
			ON UPDATE CASCADE
			ON DELETE SET NULL,
	CONSTRAINT FK_match_titelmatch FOREIGN KEY (titelmatchid)
			REFERENCES titelmatch (titelmatchid)
			ON UPDATE CASCADE
			ON DELETE SET NULL)

Ziel ist es, alle richtigen Tipps (t.tipp = m.ergebnis) anhand einer gegeben Priorität zu summieren (SUM(prioritaet)). Im Interface kann diese Berechnung allerdings auch auf spezifische Events eingeschränkt werden (m.eventid=1), doch dies funktioniert leider nicht. Habe ich vielleicht einen SQL-Denkfehler oder woran könnte das sonst liegen :confused: ...
 
Zuletzt bearbeitet:
Bin nicht der obercrack in Sachen SQL.... aber ist folgendes überhaupt möglich:

Einerseits:
Code:
SUM(prioritaet) punkte
....müsste es nicht wenn dann
Code:
SUM(prioritaet) AS punkte
heißen?

Und andererseits:
Code:
SELECT username, SUM(prioritaet) punkte
geht auch nicht oder, soweit ich weiss kann man doch auch kein
Code:
SELECT COUNT(ID) AS x FROM
zusammen mit einem normalen
Code:
SELECT * FROM
zusammenfügen... also...
Code:
SELECT COUNT(ID) AS x, * FROM tabelle

Gruß Scorpion

=====> Ups gerad erst dein edit gelesen^^
 
Zurück