2013-02-28 74 views
0

我在MySql中有三个表。表1具有以下字段INNER JOIN的SQL语法问题

表1:

EventType 
-etid 
-description 

表2:

EventAsks 
-etid 
-qid 

表3:

Questions 
-qid 
-textofquestion 

如果我有一个特定ETID,我想找到事件要求的所有问题。所以给出如下表...

EventType 
etid  description 
1  hiking 
2  biking 


EventAsks 
etid  qid 
1   1 
1   3 
2   2 
2   3 

Questions 
qid textofquestion 
1  Is it fun? 
2  Is it lots of exercise 
3  Is it expensive 

所以给定ETID的结果说ETID = 1,我想与ETID = 1返回相关的问题...

Result 
Is it fun? 
Is it expensive? 

我确定这与加入有关,但我不知道如何去做?有什么建议么?

+0

请发布你尝试过的代码,给出语法错误的代码,否则我们可以o只是猜测。 – 2013-02-28 01:53:49

+0

SELECT * FROM'eventasks' WHERE etid = 1 INNER JOIN问题 限制0,30 – Matthew 2013-02-28 01:54:19

+0

您的内部连接无效,因为它没有指定约束来显示连接应如何工作;有关详细信息,请参阅Madbreaks答案。 – 2013-02-28 01:56:08

回答

3

经典正到n关系:

SELECT Questions.textofquestion FROM EventType 
LEFT JOIN EventAsks ON EventAsks.etid = EventType.etid 
LEFT JOIN Questions ON Questions.quid = EventAsks.qid 
WHERE EventType.etid = 1; 
+0

这就是它!谢谢! – Matthew 2013-02-28 01:57:02

+0

很高兴我能帮到你 – Madbreaks 2013-02-28 01:57:43

2

你可以这样做:

SELECT Questions.textofquestion 
FROM EventType 
    INNER JOIN EventAsks 
     ON EventType.etid = EventAsks.etid 
    INNER JOIN Questions 
     ON EventAsks.qid = Questions.qid 
WHERE EventType.etid = 1 

既然你已经有etid=1昱欧可以作为简化:

SELECT Questions.textofquestion 
FROM EventAsks 
    INNER JOIN Questions 
     ON EventAsks.qid = Questions.qid 
WHERE EventAsks.etid = 1