#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. Очень просто.. Оба из разных мест