Unikalne rekordy MySql

0

Witam
Posiadam tabele składającą się z 3 pól:

  • id
  • gracz_1
  • gracz_2
  • data_gry
    Zawiera ona informację o meczach.
    Potrzebuję wyciągnąć informację kiedy który zawodnik miał ostatni mecz.
    Problem w tym że ten sam zawodnik może być raz w polu gracz_1 a raz w polu gracz_2
    Póki co udało mi się wyciągnąć ostatnie spotkanie graczy z tabeli gracz_1 lub gracz_2 ale nie wiem jak to połączyć:
create table mecze(id int not null auto_increment primary key, gracz_1 int(1) not null, gracz_2 int(11) not null, data_gry date not null);
insert into mecze (gracz_1, gracz_2, data_gry) values
('1','5','2015-01-01'),
('2','6','2015-02-02'),
('3','31','2015-03-03'),
('1','21','2015-04-04'),
('5','21','2015-05-05'),
('6','18','2015-06-06'),
('7','31','2015-04-07'),
('8','2','2015-02-08'),
('1','18','2015-03-09'),
('4','54','2015-02-13'),
('5','43','2015-02-16'),
('5','65','2015-02-11'),
('15','1','2015-02-03'),
('2','6','2015-12-05'),
('32','19','2015-02-01'),
('8','21','2015-02-23');

SELECT gracz_1, MAX(data_gry)
FROM mecze
GROUP BY gracz_1
ORDER BY gracz_1
1

Cześć,

Select gracz_1,
case
when second1 is null then first1
when first1>=second1  then first1
when second1>first1   then second1
end newcolumn

from (
Select gracz_1, max(data_gry) as first1, (
select max(data_gry)
from mecze m1
where m1.gracz_2=m.gracz_1 ) as second1
from mecze m
group by gracz_1 ) tab


Pozdrawiam ;-)

0

dzięki :)

0

Jednak nie do końca działa jak chciałem :/
Jeśli gracz nie występuje w kolumnie gracz_1 a jest w gracz_2 to już nie zostaje uwzględniony w wynikach jak tu gracz 6 z kolumny gracz_2
CREATE TABLE mecze(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, gracz_1 INT(1) NOT NULL, gracz_2 INT(11) NOT NULL, data_gry DATE NOT NULL);
INSERT INTO mecze (gracz_1, gracz_2, data_gry) VALUES
('1','5','2015-01-01'),
('2','6','2015-02-02'),
('3','31','2015-03-03'),
('1','21','2015-04-04'),
('5','21','2015-05-05'),
('2','18','2015-06-06'),
('7','31','2015-04-07'),
('8','2','2015-02-08'),
('1','18','2015-03-09'),
('4','54','2015-02-13'),
('5','43','2015-02-16'),
('5','65','2015-02-11'),
('15','1','2015-02-03'),
('1','6','2015-12-05'),
('3','6','2015-12-07'),
('32','19','2015-02-01'),
('8','21','2015-02-23');

0
 Select gracz, max(data) from  
((SELECT 
gracz_1 gracz, 
MAX(data_gry) data 
FROM mecze GROUP BY gracz_1)
Union all
(SELECT 
gracz_2 gracz, 
MAX(data_gry) data 
FROM mecze GROUP BY gracz_2)) t
group by gracz
order by gracz
0

Dziękuje

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