2013-02-28 2 views
0

У меня есть три таблицы в MySql. Таблица 1 содержит следующие поляПроблема синтаксиса SQL с INNER JOIN

Table1:

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 не так. –

+0

SELECT * FROM ' eventasks' WHERE etid = 1 INNER JOIN Вопросы LIMIT 0, 30 – Matthew

+0

Ваше внутреннее соединение является недопустимым, поскольку это не уточняя ограничение, чтобы показать, как присоединиться должны работать; см. ответ Madbreaks, чтобы узнать, как это сделать. –

ответ

3

Классический п-к-п отношения:

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

Thats it! Благодаря! – Matthew

+0

Рад, что я могу помочь – Madbreaks

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 yuou можно упростить:

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