2016-03-26 9 views
1

Spor planlaması için bir tablom var. Çift başlıklı bir programın ne zaman planlanacağını bulmak istiyorum. Aynı günde aynı takım için iki maç. kullanarak, hangi takımı belirlemektir konuda yardıma ihtiyacınız olduğunuÇift Başlı Bulmak için Sorgu

SELECT * 
FROM events 
GROUP BY DATE_FORMAT(start_date,'%j') 

Ama: Ben böyle bir şeyle çift başlıkların günlerini bulmak mümkün değilim

id  event   start_date   end_date   homeid awayid 
3391 team1 vs. team2 2016-04-27 17:00:00 2016-04-27 18:00:00 3  1 
3395 team2 vs. team3 2016-04-27 17:00:00 2016-04-27 18:00:00 5  3 
3396 team1 vs. team3 2016-05-04 17:00:00 2016-05-04 18:00:00 5  1 
3392 team3 vs. team2 2016-05-04 19:40:00 2016-05-04 20:40:00 3  5 
3393 team3 vs. team1 2016-05-11 17:55:00 2016-05-11 18:55:00 1  5 
3394 team2 vs. team1 2016-05-18 17:55:00 2016-05-18 18:55:00 1  3 

: Aşağıda örnek bir tablo var Homeid ve awayid sütunlarında yer alan takımlar, o günlerde çift başlığa sahip. Örneğin, 4/27'de '3' kimliğine sahip takımın çift başlığa sahip olduğunu bilmem gerekiyor. 5/4'te '5' takım arkadaşı.

Cevabın basit olduğundan eminim ama bugün bununla mücadele ediyorum.

Teşekkürler.

cevap

1

Bu zor bir işlemdir. Tek yönlü union all ve group by kullanır: Ben tablonun bir tek geçiş ile nasıl yapılacağını düşünmeye çalışıyordum

select team, day, count(*) as numgames 
from ((select id, homeid as team, date(start_date) as day 
     from t 
    ) union all 
     (select id, awayid as team, date(start_date) 
     from t 
    ) 
    ) t 
group by team, day 
having numgames > 1; 
+0

. Bu yeterli olacaktır. :) –

+0

Bu mükemmel! Teşekkürler! –

İlgili konular