Moin zusammen,
ich benötige einen SQL Query, der mir die Summe einer Spalte (punkte), grupiert nach einer id (benutzer_id) zurückgibt.
Bis dahin ist das für mich einfach.
Jetzt kommt aber noch eine zusätzliche Bedingung dazu: weiterhin soll er nur die Zeilen jeweils aufsummieren, wo der summierungstyp (highscore_type) "high" bzw. "low" ist.
Ob der Typ high oder low ist lässt sich allerdings nur aus einer zweiten Tabelle entnehmen. Die richtige Zuordnung der Zeilen geschiet über eine eindeutige ID (gid).
Zum besseren Verständnis hier einmal ein paar Dummy Daten samt Struktur:
Code
--
-- Tabellenstruktur für Tabelle `test_punkte`
--
CREATE TABLE `test_punkte` (
`ID` int(10) NOT NULL auto_increment,
`gid` int(10) NOT NULL default '0',
`benutzer_id` int(10) NOT NULL default '0',
`punkte` float NOT NULL default '0',
PRIMARY KEY (`ID`)
) TYPE=MyISAM;
--
-- Daten für Tabelle `test_punkte`
--
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (1, 1, 1, 10);
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (2, 1, 1, 10);
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (3, 1, 2, 20);
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (4, 1, 2, 20);
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (5, 2, 1, 10);
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (6, 2, 1, 10);
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (7, 2, 2, 20);
INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (8, 2, 2, 20);
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `test_spiel`
--
CREATE TABLE `test_spiel` (
`gid` int(8) NOT NULL auto_increment,
`highscore_type` varchar(4) NOT NULL default 'high',
PRIMARY KEY (`gid`)
) TYPE=MyISAM;
--
-- Daten für Tabelle `test_spiel`
--
INSERT INTO `test_spiel` (`gid`, `highscore_type`) VALUES (1, 'high');
INSERT INTO `test_spiel` (`gid`, `highscore_type`) VALUES (2, 'low');
Alles anzeigen
Ein query ala
SQL
SELECT
p.gid, p.benutzer_id, SUM(p.punkte) as total, s.highscore_type
FROM test_punkte p
LEFT JOIN test_spiel s ON (p.gid = s.gid)
GROUP BY (p.benutzer_id)
HAVING s.highscore_type = 'low'
funktioniert leider nicht.
Habt ihr eine Idee wie ich das lösen kann ohne die Trennung der beiden Tabellen aufzuheben?
Gruß,
Lukas