私はスポーツレフリーのゲームスケジュールを示す一連のデータを持っています。ほとんどの場合、2人のレフェリーが各ゲームで一緒に働きます。ここに私のクエリは次のとおりです。いくつかの列を除いて2つのデータ行を圧縮する
GroupName EventDate EvtTime SiteName SubSite Email FirstName LastName Phone1
==============================================================================================================================
Hoops Forever 8/10/2016 8:00 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555
Hoops Forever 8/10/2016 8:00 Kennedy High School Court #33 BMJ [email protected] Kris Jones 8013331111
Hoops Forever 8/10/2016 9:20 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555
Hoops Forever 8/10/2016 9:20 Kennedy High School Court #33 BMJ [email protected] Kris Jones 8013331111
Hoops Forever 8/10/2016 10:40 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555
Hoops Forever 8/10/2016 10:40 Kennedy High School Court #33 BMJ [email protected] Kassy Hanks 8019997777
Hoops Forever 8/10/2016 12:00 Kennedy High School Court #33 BMJ [email protected] Michael Rogers 8010001111
Hoops Forever 8/10/2016 12:00 Kennedy High School Court #33 BMJ [email protected] Kris Jones 8013331111
Hoops Forever 8/10/2016 13:20 Kennedy High School Court #33 BMJ [email protected] Michael Rogers 8010001111
Hoops Forever 8/10/2016 13:20 Kennedy High School Court #33 BMJ [email protected] Kris Jones 8013331111
今トップ2行を見て、2行の間のすべての値が同じであることに気づく:
SELECT DISTINCT g.GroupName, date(s.EventDate) AS EventDate, DATE_FORMAT(s.EventDate,'%H:%i:%s') AS EventTime, l.SiteName, ss.SubSiteName, u.Email, u.FirstName, u.LastName, u.Phone1
FROM Schedule s
JOIN Groups g
ON s.GroupID = g.GroupID
LEFT OUTER JOIN Sites l
ON s.SiteID = l.SiteID
LEFT OUTER JOIN SubSites ss
ON l.SiteID = ss.SiteID
LEFT OUTER JOIN Users u
ON s.UserID = u.UserID
WHERE g.OrganizationID = 2
AND s.EventDate > DATE_ADD(NOW(), INTERVAL 0 HOUR)
AND (s.SubSiteID = 0 OR s.SubSiteID = ss.SubSiteID)
ORDER BY l.SiteName, ss.SubSiteName, s.EventDate, u.LastName
そして、ここでは、そのクエリによって生成されるレコードの一部ですレフリーに固有の最後の4列を除きます。それでは、私が試したことは、この追加しました:
GROUP BY GroupName, EventDate, EvtTime, SiteName, SubSite
をそして、それが中途半端そこに私を得たが、私は各グループにおける第二審判失わ:
GroupName EventDate EvtTime SiteName SubSite Email FirstName LastName Phone1
==============================================================================================================================
Hoops Forever 8/10/2016 8:00 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555
Hoops Forever 8/10/2016 9:20 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555
Hoops Forever 8/10/2016 10:40 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555
Hoops Forever 8/10/2016 12:00 Kennedy High School Court #33 BMJ [email protected] Michael Rogers 8010001111
Hoops Forever 8/10/2016 13:20 Kennedy High School Court #33 BMJ [email protected] Michael Rogers 8010001111
をし、さらに苦もなく、ここで私が本当に必要なものです:
GroupName EventDate EvtTime SiteName SubSite Email1 FN1 LN1 Phone1 EMail2 FN2 LN2 Phone2
=========================================================================================================================================================================
Hoops Forever 8/10/2016 8:00 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555 [email protected] Kris Jones 8013331111
Hoops Forever 8/10/2016 9:20 Kennedy High School Court #33 BMJ [email protected] Jeff Smith 8014445555 [email protected] Kris Jones 8013331111
etc...........
私の所望の結果セットに、(REF特異的ではなく、ゲーム固有の)異なる4列は「圧縮」行に追加されることに注意してください。論理的にはそれは理にかなっています:1つの試合がありますが、2つの試合があります。私はその1つのゲームの情報が1行になるようにしたい、そして2つのrefsの情報も同じ行に追加し、最後に追加したい。実際のDBには2行ありますが、それらを結合して追加します。審判の情報がない場合、私はただヌル/空白を残すことを望んでいます。
これでSQLはどのように構築されましたか?事前にありがとう!
MAXとMINが最も簡単な方法です。ありがとうございました。私のSELECT行は次のとおりです: 'SELECT DISTINCT s.EventName、s.EventDate AS FullDate、date(s.EventDate)AS EventDate、 DATE_FORMAT(s.EventDate、 '%H:%i:%s')AS EventTime、DAYNAME( CONCAT(MAX(u.FirstName)、 ''、MIN(u.LastName))AS Ref1、 CONCAT(MAX(s.EventDate))AS日DayOfWeek、 s.AcceptedDate、g.GroupName、l.SiteName、ss.SubSiteName、CONCAT (u.FirstName)、 ''、MAX(u.LastName))AS Ref2' – HerrimanCoder