2016-04-09 4 views
0

Я новичок в SQL, поэтому вопрос. Вот мои две таблицы.Простой JOIN в SQL

persons 
+-------------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+-------------+-------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| given_name | varchar(30) | NO |  | NULL |    | 
| family_name | varchar(30) | NO |  | NULL |    | 
+-------------+-------------+------+-----+---------+----------------+ 

courses 

+------------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+------------+-------------+------+-----+---------+----------------+ 
| id   | int(11)  | NO | PRI | NULL | auto_increment | 
| teacher_id | int(11)  | NO | MUL | NULL |    | 
| name  | varchar(30) | NO |  | NULL |    | 
+------------+-------------+------+-----+---------+----------------+ 

Вот мой простой РЕГИСТРИРУЙТЕСЬ заявление,

mysql> SELECT id, given_name, family_name FROM persons, courses WHERE courses.teacher_id = persons.id; 

Вот что я получаю как ошибка,

ERROR 1052 (23000): Column 'id' in field list is ambiguous 

Что я делаю неправильно здесь. Любая помощь оценивается.

+0

, который вы хотите? people.id или courses.id? –

+0

Что вы ожидали результата? id находится в обеих таблицах, и вы выполняете неявное соединение и без псевдонима вы выбираете id и, следовательно, ошибку. –

+0

Где 'JOIN' в вашем' JOIN statement'? – Daniel

ответ

1

Вы должны изменить свой запрос следующим образом:

SELECT persons.id, given_name, family_name 
FROM persons, courses 
WHERE courses.teacher_id = persons.id; 

или

SELECT courses.id, given_name, family_name 
FROM persons, courses 
WHERE courses.teacher_id = persons.id; 

в зависимости, если вы хотите, идентификатор курса или у человека.

0

Включите внешний ключ учителя в таблицу лиц, чтобы установить отношения между учителем и человеком. . Многие студенты преподаются преподавателем