Ich habe ein Problem mit Get SUM der Gesamtzahl der Tore (Zdobyte) und Gegentakelt (Stracone) von jeder Mannschaft auf beiden Seiten, als Host (GoleGosp) und als Gast (GoleGosc). Was mache ich falsch?MySQL SUM aus mehreren Spalten mit verschiedenen GROUP BY
Für get SUM von Zielen als Host verwenden i
SELECT CONCAT(Nazwa,' ',Miasto) AS Klub, SUM(GoleGosp) AS Zdobyte,SUM(GoleGosc) AS Stracone FROM mecze JOIN kluby ON mecze.IdGosp=kluby.IdKlub WHERE (IdGosp BETWEEN 1 AND 16) AND IdGosp<>IdGosc GROUP BY CONCAT(Nazwa,' ',Miasto);
Und für SUM von Zielen als die Gäste i
SELECT CONCAT(Nazwa,' ',Miasto) AS Klub, SUM(GoleGosc) AS Zdobyte,SUM(GoleGosp) AS Stracone FROM mecze JOIN kluby ON mecze.IdGosc=kluby.IdKlub WHERE (IdGosc BETWEEN 1 AND 16) AND IdGosc<>IdGosp GROUP BY CONCAT(Nazwa,' ',Miasto);
Ich weiß nicht, wie man als diese beiden Abfragen SUM ..
Dieses funktioniert nicht
SELECT DISTINCT ZdobyteGOSP,StraconeGOSP,ZdobyteGOSC,StraconeGOSC FROM
(SELECT CONCAT(Nazwa,' ',Miasto) AS Klub, SUM(GoleGosp) AS ZdobyteGOSP,SUM(GoleGosc) AS StraconeGOSP FROM mecze JOIN kluby ON mecze.IdGosp=kluby.IdKlub WHERE (IdGosp BETWEEN 1 AND 16) AND IdGosp<>IdGosc GROUP BY CONCAT(Nazwa,' ',Miasto)) as p1,
(SELECT CONCAT(Nazwa,' ',Miasto) AS Klub, SUM(GoleGosc) AS ZdobyteGOSC,SUM(GoleGosp) AS StraconeGOSC FROM mecze JOIN kluby ON mecze.IdGosc=kluby.IdKlub WHERE (IdGosc BETWEEN 1 AND 16) AND IdGosc<>IdGosp GROUP BY CONCAT(Nazwa,' ',Miasto)) as p2;
.
'CREATE TABLE `mecze` (
`IdGosp` int(11) DEFAULT NULL,
`IdGosc` int(11) DEFAULT NULL,
`Datameczu` date DEFAULT NULL,
`GoleGosp` int(11) DEFAULT NULL,
`GoleGosc` int(11) DEFAULT NULL,
`IleWidzow` int(11) DEFAULT NULL,
KEY `IdGosp` (`IdGosp`),
KEY `IdGosc` (`IdGosc`),
CONSTRAINT `mecze_ibfk_2` FOREIGN KEY (`IdGosc`) REFERENCES `kluby` (`IdKlub`),
CONSTRAINT `mecze_ibfk_1` FOREIGN KEY (`IdGosp`) REFERENCES `kluby` (`IdKlub`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'
'CREATE TABLE `kluby` (
`IdKlub` int(11) NOT NULL DEFAULT ''0'',
`Nazwa` varchar(40) DEFAULT NULL,
`Miasto` varchar(30) DEFAULT NULL,
`RokZal` varchar(4) DEFAULT NULL,
PRIMARY KEY (`IdKlub`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'
EINSÄTZE
INSERT INTO kluby (IdKlub,Nazwa,Miasto,RokZal) VALUES
(1,'Wisla','Krakow',1933),
(2,'Slask','Wroclaw',1947),
(3,'Legia','Warszawa',1945),
(4,'Lech','Poznan',1950),
(5,'Stomil','Olsztyn',1962),
(6,'Lechia','Gdansk',1949),
(7,'Rokita','Brzeg Dolny',1951),
(8,'Izolator','Boguchwala',1955),
(9,'LKS','Lodz',1946),
(10,'Gornik','Zabrze',1948),
(11,'Groclin','Grodzisk',1977),
(12,'Wisla','Plock',1932),
(13,'Cracovia','Krakow', 1925),
(14,'Korona','Kielce',1933),
(15,'Jagiellonia','Bialystok',1954),
(16,'Unia','Raciborz',1950);
INSERT INTO mecze (IdGosp,IdGosc,Datameczu,GoleGosp,GoleGosc,IleWidzow) values
(10,14,'2009-01-25',2,2,9830),
(11,14,'2009-02-01',2,2,1876),
(12,14,'2009-02-08',5,1,8670),
(13,14,'2009-02-15',5,3,16969),
(14,14,'2009-02-22',2,5,7688),
(15,1,'2008-10-05',1,2,1222),
(16,2,'2008-10-05',3,0,1899),
(15,3,'2008-10-15',2,1,1333),
(16,4,'2008-10-15',0,5,722),
(5,15,'2008-10-22',1,1,2113),
(6,16,'2008-10-22',1,1,522),
(4,10,'2008-12-28',3,5,6521),
(5,10,'2009-01-04',4,5,6077),
(6,10,'2009-01-11',3,3,10385),
(7,10,'2009-01-18',2,5,8254),
(8,10,'2009-01-25',5,4,9821),
(9,10,'2009-02-01',5,2,3256),
(1,1,'2008-10-04',3,3,5559),
(2,1,'2008-10-05',4,5,7565),
(3,1,'2008-10-12',1,4,8910),
(4,1,'2008-10-19',3,5,1208),
(5,1,'2008-10-26',2,1,6577);
könnten Sie Einbuchtung auf Ihre Fragen auch anwenden so sind sie besser lesbar und fügen vielleicht auch ein paar insert-aussagen für testdaten und das erwartete ergebnis mit diesen testdaten hinzu – Jester
Beitrag editiert, ug ot einige Einsätze für beide Tabellen – Kend3r
Schön, nur meine eigene Datenbank einrichten, um damit zu testen. Könnten Sie also besser zeigen oder erklären, was Ihr erwartetes Ergebnis mit diesem Datensatz wäre? – Jester