Tabela sportowa? Zapytania sql

0

Witam,
Proszę was o pomoc. Próbuje jednym zapytaniem wyciągnąć z terminarza sportowego wszystkie wyniki które będzie tworzyć tabele rozgrywek.

Baza wygląda tak:

CREATE TABLE `mecze` (
  `id` int(11) NOT NULL auto_increment,
  `druzyna_a` varchar(20) NOT NULL default '0',
  `druzyna_b` varchar(20) NOT NULL default '0',
  `g_a` int(11) NOT NULL default '0',
  `g_b` int(11) NOT NULL default '0',
  `p_a` int(11) NOT NULL default '0',
  `p_b` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;


INSERT INTO `mecze` VALUES (1, 'druzyna_1', 'druzyna_2', 7, 2, 3, 0);
INSERT INTO `mecze` VALUES (2, 'druzyna_3', 'druzyna_4', 5, 5, 1, 1);
INSERT INTO `mecze` VALUES (3, 'druzyna_1', 'druzyna_3', 6, 5, 2, 1);
INSERT INTO `mecze` VALUES (4, 'druzyna_2', 'druzyna_4', 3, 0, 3, 0);
INSERT INTO `mecze` VALUES (5, 'druzyna_1', 'druzyna_4', 5, 4, 3, 0);
INSERT INTO `mecze` VALUES (6, 'druzyna_2', 'druzyna_3', 4, 2, 3, 0);

kolumny: bramki strzelone w meczu przez Gospodarzy (g_a) i gosci (g_b), tak samo kolumny p_a i p_b to kolumny z punktami (czyli zwycięstwo, wygrana, remis).

Teraz mam dwa zapytania jedno robi tabele rozgrywek gdzie zlicza mecze rozgrywane w domu (GROUP BY druzyna_a) drugie zapytanie zlicza mecze rozegrane na wyjeździe (GROUP BY druzyna_b):
Zapytanie I - zlicza mecze w domu

SELECT druzyna_a, COUNT(druzyna_a) AS mecze, SUM(p_a) AS punkty, SUM(g_a) AS strzelone, SUM(g_b) AS puszczone 
FROM mecze GROUP BY druzyna_a ORDER BY punkty DESC

Zapytanie II - zlicza mecze na wyjeździe

SELECT druzyna_b, COUNT(druzyna_b) AS mecze, SUM(p_b) AS punkty, SUM(g_b) AS strzelone, SUM(g_a) AS puszczone
 FROM mecze GROUP BY druzyna_b ORDER BY punkty DESC

Teraz opisze mój problem potrzebuje aby te dwa zapytania tworzyły całość. Czyli tabele ze wszystkich meczów rozgrywanych w domu i na wyjeździe.

Proszę o pomoc w zrobieniu takiego zapytania!

POZDRAWIAM

0
mateuszles napisał(a)

Teraz opisze mój problem potrzebuje aby te dwa zapytania tworzyły całość. Czyli tabele ze wszystkich meczów rozgrywanych w domu i na wyjeździe.

(SELECT druzyna_a, COUNT(druzyna_a) AS mecze, SUM(p_a) AS punkty, SUM(g_a) AS strzelone, SUM(g_b) AS puszczone
FROM mecze GROUP BY druzyna_a)
UNION
(SELECT druzyna_b, COUNT(druzyna_b) AS mecze, SUM(p_b) AS punkty, SUM(g_b) AS strzelone, SUM(g_a) AS puszczone
 FROM mecze GROUP BY druzyna_b)
 ORDER BY punkty DESC
0

Tak ale ja potrzebuje żeby te punkty sie zliczały, a nie łączyło 2 tabel do siebie

0

Dopisze jeszcze ze interesuje mnie taki wynik:

Druzyna | Mecze | Punkty | Strzelone | Puszczone
druzyna_1 | 3 | 8 | 18 | 11
druzyna_2 | 3 | 6 | 9 | 9
druzyna_3 | 3 | 2 | 12 | 15
druzyna_4 | 3 | 1 | 10 | 12

0
SELECT druzyna_a, SUM(mecze) AS mecze, SUM(punkty) AS punkty, SUM(strzelone) AS strzelone, SUM(puszczone) AS puszczone
FROM ((SELECT druzyna_a, COUNT(druzyna_a) AS mecze, SUM(p_a) AS punkty, SUM(g_a) AS strzelone, SUM(g_b) AS puszczone
FROM mecze GROUP BY druzyna_a)
UNION
(SELECT druzyna_b, COUNT(druzyna_b) AS mecze, SUM(p_b) AS punkty, SUM(g_b) AS strzelone, SUM(g_a) AS puszczone
 FROM mecze GROUP BY druzyna_b))  AS t
GROUP BY druzyna_a
 ORDER BY punkty DESC

1 użytkowników online, w tym zalogowanych: 0, gości: 1