MySql unikalne rekordy

0

Cześć,
mam taką tabele:

CREATE TABLE mecze
(
id int auto_increment primary key,
druzyna_1 int,
druzyna_2 int,
wynik varchar(10),
kto_wygral int,
data_gry date
);

INSERT INTO mecze
(druzyna_1, druzyna_2, wynik, kto_wygral, data_gry)
VALUES
(1,3,'2:1',1,'2015-09-01'),
(2,3,'2:2',3,'2015-09-02'),
(3,1,'5:2',3,'2015-09-03'),
(4,2,'3:1',2,'2015-09-04'),
(5,1,'2:7',1,'2015-09-05'),
(1,5,'1:1',5,'2015-09-06'),
(2,1,'0:1',1,'2015-09-07'),
(3,4,'2:1',4,'2015-09-08'),
(4,5,'0:0',5,'2015-09-09'),
(5,4,'2:2',4,'2015-09-10'),
(1,4,'3:1',1,'2015-09-11'),
(2,3,'2:2',3,'2015-09-12'),
(3,5,'2:1',3,'2015-09-13'),
(4,1,'1:1',4,'2015-09-14'),
(5,4,'2:1',5,'2015-09-15'),
(1,4,'4:4',1,'2015-09-16'),
(2,3,'3:0',3,'2015-09-17'),
(3,5,'2:0',5,'2015-09-18');

Potrzebuje otrzymać informacje o ostatnim meczu zespołu = 1 z każdą drużyną z którą grał, kiedy było ostatnie spotkanie i ile było łączenie spotkań.
Zespół 1 może wystąpić w kolumnie druzyna_1 jak i druzyna_2

Taki wynik chciałbym uzyskać:
Drużyna Przeciwnik Ostatni mecz łącznie meczy
1 2 2015-07-07 1
1 3 2015-07-16 2
1 4 2015-07-16 2

Nie bardzo znam się na konstruowaniu bardziej zaawansowanych zapytań.
Męczę się z tym dłuższy czas i to jedyne co mi się udało stworzyć:

select druzyna_1, druzyna_2, data_gry FROM
(
	(SELECT 
		druzyna_1, druzyna_2,
		data_gry FROM mecze WHERE druzyna_1 =1 group by druzyna_1,druzyna_2
    )
    UNION ALL
    (
      SELECT 
		druzyna_1, druzyna_2,
		data_gry FROM mecze WHERE druzyna_2 =1 group by druzyna_1,druzyna_2
    )
) 
t
GROUP BY druzyna_1
ORDER BY druzyna_2

Nie idę jednak chyba w dobry kierunku więc może ktoś pomoże rozwiązać problem?

0

Tak na oko to powiedziałbym:

SELECT
	m.`druzyna_1`,
	m.`druzyna_2`,
	max(m.`data_gry`),
	count(m.`druzyna_2`)
	
FROM
	`mecze` m
	
WHERE
	m.`druzyna_1` = 1
	
GROUP BY
	m.`druzyna_2`

ORDER BY
	m.`druzyna_2` ASC
0

dzięki za odpowiedź, poprawiłem posta, zespół który mnie interesuje może wystąpić w kolumnie druzyna_1 lub druzyna_2 a tego chyba zapytanie nie uwzględnia

0

``druzyna_1= 1 ORdruzyna_2 = 1

0
CeKa napisał(a):

``druzyna_1= 1 ORdruzyna_2 = 1

Pierwsze co zrobiłem to dodałem OR druzyna_2 = 1 ale błędnie działa takie zapytanie:

druzyna_1 druzyna_2 MAX(m.data_gry) COUNT(m.druzyna_2)
3 1 September, 14 2015 0000 4
1 3 September, 01 2015 0000 1
1 4 September, 16 2015 0000 2
1 5 September, 06 2015 0000 1

0

Najwygodniej byłoby zrobić po prostu dwa odrębne zapytania i wykorzystywać w zależności od tego, którą drużynę chcesz liczyć - nie widzę innego rozwiązania.

0
Patryk27 napisał(a):

Najwygodniej byłoby zrobić po prostu dwa odrębne zapytania i wykorzystywać w zależności od tego, którą drużynę chcesz liczyć - nie widzę innego rozwiązania.

Chyba mało precyzyjnie opisałem problem.
Kolumny druzyna_1 oraz druzyna_2 przechowują id zespołów. W kolumnie druzyna_1 jest id zespołu który gra u siebie a w kolumnie druzyna_2 jest id zespołu który gra na wyjeździe.

Ja potrzebuje liczyć zespół o id = 1, problem jednak polega na tym, że jeśli gra ona u siebie to zawsze będzie w kolumnie druzyna_1 a jeśli gra na wyjeździe to będzie w kolumnie druzyna_2.

Potrzebuje statystki wszystkich meczy a nie tylko tych granych u siebie :/

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