2014-02-27 22 views
0

我有1場比賽只WHERE gameid = 36數據搜索時工作正常的查詢,但一旦我嘗試gameid = 36 AND gameid = 37查詢運行正常參加多場比賽,但返回所有0的所有數據SQL查詢有效,但數據正在破壞?

SELECT 
CONCAT_WS( '. ', SUBSTR(p.playerfname, 1, 1) , p.playerlname) name, 
COALESCE(goalEvents.goals, 0) goals, 
COALESCE(a1.assists, 0) + COALESCE(a2.assists, 0) assists, 
COALESCE(goalEvents.goals, 0) + COALESCE(a1.assists, 0) + COALESCE(a2.assists, 0) points 
FROM players p 
LEFT JOIN (SELECT scorer, COUNT(scorer) goals FROM goalEvents WHERE gameid = 36 AND gameid = 37GROUP BY scorer) goalEvents ON p.playerid = goalEvents.scorer 
LEFT JOIN (SELECT assist1, COUNT(assist1) assists FROM goalEvents WHERE gameid = 36 AND gameid = 37 GROUP BY assist1) a1 ON p.playerid = a1.assist1 
LEFT JOIN (SELECT assist2, COUNT(assist2) assists FROM goalEvents WHERE gameid = 36 AND gameid = 37 GROUP BY assist2) a2 ON p.playerid = a2.assist2 
WHERE p.playerteam = 26 ORDER BY points DESC, goals DESC 

必須有發生錯誤與多個遊戲線被稱爲

FROM goalEvents WHERE gameid = 36 AND gameid = 37 

我是通過多個遊戲搜索錯?林基本上都是試圖通過最後4個gameids我的表的搜索

回答

1

嘗試:

FROM goalEvents WHERE gameid = 36 OR gameid = 37 

您將需要使用OR代替AND,遊戲ID永遠是36 AND 37.你想找到兩個不同記錄,一個與gameid=36和另一個與gameid=37。如果您使用AND,則它們都會失敗。

如果你有超過2個,你也可以嘗試gameid IN (36, 37, ...)這是OR手短,OROR

+0

但我想從兩個那些比賽統計數據,並添加在一起,我可以將所有具有相同的查詢遊戲數據包中得到,如果我不指定遊戲ID,即時通訊試圖從特定遊戲的統計信息和將它們全部加起來 – user934902

+0

但是,對於第一個遊戲,您不能使用'gameid = 36 AND gameid = 37',其中gameid = 36只有36,那麼該記錄會失敗'AND gameid = 37'。它不適用於或? – davur

+0

我想我現在得到你說的話,讓我試試或者 – user934902

1

可以使用IN CLAUSE我認爲,將這樣的伎倆

喜歡嘗試這個out

FROM goalEvents WHERE gameid in(36,37) 

祝你好運。

1

試試這個:

FROM goalEvents WHERE gameid in (36, 37); 

我猜遊戲ID是唯一的,所以你不能用and,因爲它是不可能的遊戲ID是36和37在一排。因此,嘗試使用in