2011-11-28 72 views
1

我是一個完整的SQL小白,而且不知道如何利用連接。如果有人可以幫助這個查詢,那會很好。SQL查詢,以便列結果

我有一個表questions它包含兩列:queidque。 另一個表options包含問題的相應選項,並且具有列optionid,queid, option

我該如何做SELECT聲明,以便我可以根據queid將兩個表連接在一起?

喜歡的東西:

SELECT * from questions,options where queid=1 

回答

2

你應該試試這個:

SELECT que.*, opt.* FROM questions que 
INNER JOIN options opt ON que.queid = opt.queid 
WHERE que.queid = 1 

INNER JOIN負載問題和選項有每個表中至少一個corresponing記錄。

如果你需要得到所有問題(甚至沒有選項的),你可以使用

SELECT que.*, opt.* FROM questions que 
LEFT JOIN options opt ON que.queid = opt.queid 
WHERE que.queid = 1 

LEFT JOIN總是加載的問題,如果他們有其他選擇,他們的選擇也;如果不是,你會得到NULL的選項列。

+0

我不習慣在clause'消息'不明確的列queid。 – xbonez

+1

@xbonez:也許你在編輯它時正在閱讀我的答案。現在試試 – Marco

2

可以由

SELECT * FROM questions q JOIN options o ON q.queid=o.queid WHERE q.queid=1 
0
SELECT * 
FROM questions 
JOIN options ON questions.queid = options.queid 
WHERE questions.queid = 1 
2
SELECT q.*,o.* FROM questions q 
JOIN options o ON q.queid = o.queid 
WHERE q.queid = 1 
+0

它應該是'q.queid = o.queid'。 –

+0

是的,我不注意 – Oyeme

0

可以使用他們的共同點列連接兩個相關的表。

你的情況

你可以寫:

SELECT * FROM Questions as Q INNER JOIN Options O ON Q.queid=O.queid WHERE Q.quid=1 

您也可以省略其中相似的這一部分:

SELECT * FROM Questions as Q INNER JOIN Options O ON Q.queid=O.queid AND Q.quid=1 

有不同類型的連接:

INNER

外(左,右,全)

通過內部聯接,您的意思是隻返回兩個表中共有的記錄 當您使用外部聯接時,給定端上的所有記錄都是返回加上在另一端具有相應值的記錄,否則,而不是另一端值將會變爲null。