2012-07-18 180 views
0

我有一個關於MySQL的問題。#1242:子查詢返回不止一行

我有一個像coursepapersstudents幾張桌子,studentspapers

現在我想的是,我的查詢應返回結果,如:

應該選擇學生的名字,學生桌學生類別,學生可選的論文,但我沒有在我的學生論文表中提到任何東西,但在論文表中。

論文表有id作爲我在studentspaper爲外鍵使用了主鍵。

現在我使用的是簡單的查詢是:

select 
    st.name, 
    s.paperid 
from 
    students st, 
    sps s join papers 
    on paperid 
where 
    paperid = (select p.p_id from papers p where type='optional') 
    and st.course=1 

我不知道我該怎麼辦。

它說子查詢返回多於1列#1242

回答

0

您所查詢的是:

select st.name, s.paperid 
from students st, 
    sps s join 
    papers 
    on paperid 
where paperid= (select p.p_id from papers p where type='optional') and st.course=1 

它缺少學生和SP之間的聯接。我認爲你的意思是:

select st.name, s.paperid 
from students st join 
    sps s 
    on st.studentid = sps.studentid join 
    papers p 
    on p.paperid = sps.paperid 
where p.type='optional' and st.course=1 

但是,沒有看到表格的結構,很難說這是否是正確的查詢。

+0

非常感謝。真的,你做了我的一天。 – 2012-07-18 19:02:02

4

在這種情況下,你必須改變你的SQL來......這:

select st.name, s.paperid 
from students st, sps s join papers on paperid 
where paperid in (select p.p_id from papers p where type='optional') and st.course=1 

我剛換了「=」到「內」 。

這應該解決您的問題。

+0

這個環節應該是在這裏:MySQL的比較操作符(http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_in) – Timur 2012-07-18 17:49:32

+1

這個答案是正確的。如果這個答案幫助你,請接受它。 – danilodeveloper 2012-07-18 18:05:41

+0

我沒有工作 – 2012-07-18 18:07:42

相關問題