2013-10-18 46 views
0

我有兩個不同的表,一個是匹配,另一個是玩家,我試圖運行子查詢,返回name(從players表)和matchno(從matches)。我可以讓它返回一個或另一個,但不是兩個。MySql Subquerying 2表

也有一些我的查詢返回錯誤(在工作臺6.0)

錯誤代碼:1242子查詢返回多個1行

具有諷刺意味的是我的命=)

我的邏輯就是嘗試使用規範化,即playerno

即:

select name 
from players 
where playerno in 
(select matchno 
from matches 
group by matchno) 

這將返回剛剛從球員表的名稱。我對MySql相當陌生,已經沖刷了我的書和互聯網,並且仍然將我的頭撞在牆上,任何幫助都將不勝感激!在此先感謝

我發現,工作用加入了查詢和子查詢:

select m.matchno, p.name 
    from (matches as m inner join players as p 
    on m.playerno = p.playerno) 
+0

您應該只看到更新的查詢錯誤。要排除故障,請自行運行子查詢,以便查看返回的內容。決定你想要的行,並寫出必要的代碼來獲得它。 –

+0

實際上,如果在子查詢之前有等號,你也會在選擇查詢中看到這個錯誤。如果您使用關鍵字「in」,按照您的示例,您不應該看到它。如果你是,用特定的SQL編輯你的問題,拋出錯誤。 –

回答

0

我認爲你必須剛剛加入表中查詢。如果你有這樣的事情:

players table 
id  name 
1  P1 
2  P2 

    matches table 
idm idplayer match 
1  1   blah 
2  1   bleh 
3  2   fly 

的查詢來獲取比賽和球員將

select players.id, 
     players.name, 
     matches.match 
    from players, 
     matches 
    where playes.id = matches.idplayer 
+0

這似乎是可行的,不幸的是這是一個學校的任務和問題明確指出使用子查詢。在現實世界的應用程序中,我會使用你所抱怨的方式。 –

+0

你能提供一些你的數據的例子,這樣我就可以打開你想要做的事情嗎? –

+0

玩家表格包含:PLAYERNO,NAME,INITIALS,BIRTH_DATE,SEX,JOINED,STREET,HOUSENO,POSTCODE,TOWN,PHONENO,LEAGUENO。 –