2016-06-06 4 views
-1

Я новичок в этом и программирую и задаюсь вопросом, может ли кто-нибудь помочь мне с SQL-запросом. У меня 3 таблицы. таблица 1 называется Student (id, number, teacherID), а таблица 2-й таблицы называется StudentUpdate (StudentId, teacher_number), а третья таблица называется учителем (id, number, studentID).Таблица обновлений на основе номера из второй таблицы

Я хотел бы обновить таблицу 1 (таблицу учеников) со всеми значениями из таблицы 2 (обновление учеников) на основе идентификатора учителя. как это сделать, если таблица 2 содержит номер учителя, а не идентификатор? Я использую SQL Server 2012. Благодаря всем заранее

+0

Все, что вы пробовали до сих пор? – BJones

+0

То, что вы ищете, - это концепция JOINS. Существует несколько разных типов объединений, и я рекомендую вам провести серьезные исследования по ним; они могут стать очень сложными, но являются одним из основных блоков для SQL-операторов. Гиоргос Бетсос привел пример ниже, но, опять же, действительно сосредоточен на понимании того, что делает JOIN. В приведенном ниже примере используется «INNER JOIN». Сравните это с «OUTER JOIN». –

+1

Возможный дубликат [Как я могу выполнить инструкцию UPDATE с помощью JOIN в SQL?] (Http://stackoverflow.com/questions/1293330/how-can-i-do-an-update-statement-with-join-in -sql) – Ben

ответ

0

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

UPDATE s 
SET TeacherID = su.teacher_number 
FROM Student AS s 
JOIN Teacher AS t ON s.teacherID = t.id 
JOIN StudentUpdate AS su ON s.id = su.StudentId 

Этот запрос выполняет UPDATE с использованием двух JOIN операции:

  • Student с Teacher основанные на указаниях учителя и
  • StudentUpdate с Teacher на основе идентификатора студента.

    , чтобы извлечь из таблицы StudentUpdate информацию, необходимую для UPDATE (на основе ограниченной информации, указанной в OP).

+0

Извините за -1, но ответы без объяснения способствуют копированию и вставке. Можете ли вы дать объяснение JOINS, которое вы используете? –

+0

number = t.number, разве это не так, чтобы присоединиться к двум различным клавишам? вы присоединяетесь к номеру ученика к номеру учителя? –

+0

Студент @GiorgosBetsos имеет (идентификационный номер, номер студента и TeacherID FK). Учитель имеет идентификатор ПК, TeacherNumber). StudentUpdate содержит studentID и Teacher.Number Not teacher.ID :(Я хочу обновить Student.TeacherID в таблице учеников на основе номера преподавателя, указанного в таблице StudentUpdate. Было бы намного проще, если бы они предоставили мне с учителемID в таблице StudentUpdate. Извините за недоразумение –

Смежные вопросы