База данных находится здесь: http://sqlfiddle.com/#!9/bf0171SQL-поиск по двум таблицам;
Я хочу найти всех студентов в классе «Проф.Давид». Тем не менее, результат поиска является:
Select Student.name from Student, Teacher where Teacher.s_id =Student.id and Teacher.name="Prof. David";
+------+
| name |
+------+
| Tom |
| John |
| Mary |
| Tom |
| John |
| Mary |
+------+
Я полагаю, что результат должен быть «Томь» и «Джон» только. В чем проблема?
Это на самом деле работает с присоединиться: "где Teacher.s_id = Student.id и Teacher.name =" Prof , Дэвид », он возвращает« Tom »и« John »правильно, не используя« JOIN ». – user697911
Вы можете присоединиться неявно в предложении WHERE, но я не рекомендую его. Что произойдет, если вам нужно сделать левое соединение? ваш критерий WHERE имеет инструкцию OR? Существует множество вещей, которые могут пойти не так, и явное использование JOIN поможет уменьшить количество несчастных случаев. –
@ user697911 - Для обсуждения здесь приведен поток из другого StackExchange по проблеме: http: // programers.stackexchange.com/q/78225 –