2012-02-10 40 views
3

我做了一個查詢,從三個不同的表中查找最後24個結果。分組在MySQL中的查詢無法正常工作

查詢是:

SELECT m.MovID,m.Type,m.Image,m.Date,t.SerID,t.Type,t.Image,t.Date,g.GamID,g.Type,g.Image,g.Date 
FROM movie m, tvseries t, games g 
GROUP BY m.MovID, t.SerID, g.GamID 
LIMIT 0,24 

但通過在此查詢組的結果是行不通的。

+0

用不着喊。 – 2012-02-10 13:15:02

+1

你究竟想達到什麼目的? – 2012-02-10 13:15:04

+0

您能否提供一些您試圖從數據庫中獲取的示例數據和示例結果? – 2012-02-10 13:20:10

回答

1

GROUP BY不是問題(至少不是主要問題)。

Th真正的問題是,你從3個表中選擇數據而不是加入他們。您查詢的這個部分:

from movie m 
     , tvseries t 
     , games g 

meanss與第三表的每一行的第2個的每一行的第一個表的每一行的所有組合。那是你要的嗎?

FROM movie m 
    CROSS JOIN tvseries t 
    CROSS JOIN games g 

最有可能要JOIN 3個表:

FROM movie m 
    INNER JOIN tvseries t 
    ON t.someColumn = m.someColumn 
    INNER JOIN games g 
    ON g.someOtherColumn = m.someOtherColumn 
1

出現在SELECT所有列要麼:

  1. 存在也聲明GROUP BY部分或
  2. 通過像SUM一些聚合函數,AVG
+2

這對於MySQL來說是錯誤的。查看關於gdoron答案的評論。 – 2012-02-10 13:23:29

+0

@Lieven:感謝您的提示,我已經檢查過MySQL文檔。不能說使用不確定的數據是一個好主意,我不認爲OP實際上需要這個......不管怎樣,這就是爲什麼OP的查詢沒有被服務器拒絕,即使它違反了標準的SQL。 – 2012-02-10 13:30:56

1

沒有被計算有關您的查詢出現什麼問題的更多信息,或者您期待什麼結果與Vs.你所收到的,我認爲你應該包括m.MovID在你的SELECT。最好的做法是GROUP BYSELECTSELECT什麼你GROUP BY