2014-09-01 54 views
-3


我期待所有的足球時間表。
我用表:
足球/運動在mysql中的所有時間表

  • 團隊:有關俱樂部的信息:ID,姓名,團隊實際名稱
  • FinalTables:所有的決賽桌,季受季節和逐級

查詢

SELECT 
    t.team Team, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN 1 ELSE 0 END) Seasons, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.utakmica ELSE 0 END) P, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.pobjede ELSE 0 END) W, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.nerješeni ELSE 0 END) D, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.porazi ELSE 0 END) L, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.postigao ELSE 0 END) GF, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.primio ELSE 0 END) GA, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.postigao-f.primio ELSE 0 END) GD, 
    SUM(CASE WHEN (f.TeamActualName = t.team) THEN f.bodovi ELSE 0 END) Points 

FROM 
    FinalTables AS f, 
    Teams AS t 

WHERE 
    f.level = 1 

GROUP BY 
    t.id 

ORDER BY 
    Points DESC, 
    GD DESC, 
    GF DESC, 
    Team ASC 

這個查詢WO rk太棒了。

我有兩個問題。

  1. 首先在團隊表中列出所有時間表獨立遊戲的所有俱樂部,在所有時間表中我也收到很多俱樂部與零遊戲。例如,並不是所有的球隊都在第一關,所有其他球隊都沒有比賽。如何避免它,所以只接受與第一級玩至少一場比賽的俱樂部的桌子,例如。

  2. 第二個問題是如何在第一列中添加序號。那麼,誰最有點是「1」,而這要結束了,2,3,4 .....

我所有的努力是沒有成功。一些幫助? :)

回答

0

首先,我知道這不是你的問題,但你已經以非常有創意的方式完成了f和t之間的連接。

其次,我將假設每個團隊都列在團隊表中。我在理解你的第一個問題時遇到了一些麻煩,但是如果不是這樣,那應該是。在FinalTables上還應該有一個外鍵來強制任何在那裏列出的團隊也必須在團隊中。第三,我並不是MySql的專家,但Google花了很少的時間去解答排名問題。我將鏈接到一個(Rank function in MySQL)並在我的答案中實施其建議,但我無法對其進行測試。我猜你所得到的任何讚揚都與缺乏研究嘗試有關。不要讓它讓你灰心 - 當我們陷入困境時,我們都會來這裏尋求答案。

我已經重寫你的SQL這樣的(只要記住它可能有一個錯字或可能需要的調整 - 我無法測試它在一個MySQL安裝自己):

SELECT 
    t.team Team, 
    COUNT(*) Seasons, 
    SUM(f.utakmica) P, 
    SUM(f.pobjede) W, 
    SUM(f.nerješeni) D, 
    SUM(f.porazi) L, 
    SUM(f.postigao) GF, 
    SUM(f.primio) GA, 
    SUM(f.postigao-f.primio) GD, 
    SUM(f.bodovi) Points, 
    @curRank := @curRank + 1 AS rank 
FROM 
    Teams AS t, 
    (SELECT @curRank := 0) 
    LEFT JOIN FinalTables AS f on f.TeamActualName = t.team 
WHERE 
    f.level = 1 
GROUP BY 
    t.id 
ORDER BY 
    Points DESC, 
    GD DESC, 
    GF DESC, 
    Team ASC 
+0

謝謝你的回答@scott我看起來也鏈接你的建議。 我嘗試你的答案,但沒有收到正確的結果 排列列給我行隊表的行數。 在球隊桌上是所有在第一或第二分區至少參加一個賽季的俱樂部。 我希望只與在第一節至少有一個賽季參加比賽的俱樂部製作全時間表,但是按點(和其他標準)排序。 我看如果可能的話,查詢只顯示在第一聯賽中至少有一個賽季參加的俱樂部的SUM線,例如。所以季節> 0 – kigor 2014-09-02 15:29:36

+0

用HAVING Seasons解決問題2> 0 – kigor 2014-09-02 16:31:55