как использовать объединение 2 таблиц

#sql #oracle #join #sql-insert

#sql #Oracle #Присоединиться #sql-вставка

Вопрос:

У меня есть 3 таблицы T1, T2, T3 таблица T1 содержит 2 столбца (ключ, класс / ученик) столбец class / student содержит как классы, так и ученика, например (английский, математика, марк, том, ..) таблица T2 содержит 2 столбца (класс, ученик), в каждом классе более одногостудент в нем, и в этом столбце 2 используется ключ из T1. Теперь в таблице T3 я хочу вставить определенный класс со своим учеником в столбец A для класса и B для учеников, зная, что в этих столбцах используется ключ из T1, я попробовал это, но он возвращает конкретный класс со своими учениками, но один lign повторяется много раз:

 INSERT INTO T3 (A,B) 

SELECT m.class, m.student FROM T1 b,T2 m
WHERE m.class=(select key from T1 where class/student='English') AND b.KEY = m.student ;
  

Комментарии:

1. Примеры данных и желаемые результаты помогут.

Ответ №1:

используйте явное объединение, а не соединение, разделенное комой, мне кажется, вы пытаетесь выполнить запрос, приведенный ниже

 INSERT INTO T3 (A,B)    
SELECT m.class, m.student FROM T1 a
    join T1 b on  a."key"=b."key"
    join 
    T2 m on a."key"=m.student
    WHERE m.class in (select "key" from T1 where class='English') 
  

Комментарии:

1. это дает недопустимый идентификатор .key

2. @Blue у вас есть ключевой столбец в таблице T1

3. ora-01747: недопустимый пользователь.таблица.столбец, таблица.столбец или спецификация столбца

4. @Blue извините, я ошибочно использую [], это должна быть двойная кавычка

5. ora-00904: «b». «ключ»: недопустимый идентификатор

Ответ №2:

Попробуйте ниже:

 INSERT INTO T3 (A , B)    
SELECT M.class, M.student 
FROM T1 X Join T1 Y ON X.key = Y.key
Join T2 Z ON X.key = M.student
WHERE M.Class IN (SELECT key FROM T1 WHERE class ='English') 
  

Комментарии:

1. в чем разница между вашим ответом и ответом @zaynul

2. Очень просто.. Оба из разных мест