2011-11-28 44 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。