দুটি পৃথক টেবিল থেকে কোনও সারণীতে মান কীভাবে সন্নিবেশ করা যায়?


12

আমি তিনটি টেবিল আছে

students table 
------------------------------------  
id(PK, A_I)  |  student_name | nationality

teachers table
------------------------------------
id(PK, A_I)  |  teacher_name |  email

classroom table
----------------------
id(PK, A_I)   | date   | teacher_id(FK to teachers.id)  |  student_id(FK to students.id)

যদি আমি (শিক্ষকের নাম দেওয়া হয়েছিল davidউদাহরণস্বরূপ) এবং student_id ( 7উদাহরণস্বরূপ) এবং সন্নিবেশ করতে বলা teacher_idমধ্যে classroomউপর ভিত্তি করে টেবিল idমধ্যে teachersটেবিল, আমি হবে:

insert into classroom (date, teacher_id, student_id)
select '2014-07-08', id, 7
from teachers
where teacher_name = 'david';

এখন, যদি আমাকে সরাসরি শিক্ষার্থীর আইডি না দেওয়া হয় এবং কেবলমাত্র শিক্ষার্থীর নাম না দেওয়া হয়? মনে করুন আমাকে শিক্ষকের নাম 'ডেভিড' এবং শিক্ষার্থীর নাম 'সাম' দেওয়া হয়েছিল। আমি কিভাবে পেতে পারি teacher_idথেকে teachersটেবিল এবং student_idথেকে studentsটেবিল এবং উভয় সন্নিবেশ মধ্যে classroomটেবিল তাদের নিজ নিজ নাম উপর ভিত্তি করে?

উত্তর:


15

আপনি কোয়েরিটি এভাবে লিখবেন

insert into classroom (date, teacher_id, student_id)
select '2014-07-08', t.id, s.id
from teachers t,students s
where t.teacher_name = 'david'
and s.student_name = 'sam';

সতর্ক হোন. এটি কার্টেসিয়ান পণ্য। এর কাছে যাওয়ার আরও একটি উপায়

select teacher_id into @tid from teachers where teacher_name = 'david';
select student_id into @sid from students where student_name = 'sam';
insert into classroom (date, teacher_id, student_id) values ('2014-07-08',@tid,@sid);

ধন্যবাদ স্যার, আমি কি এখানে অভ্যন্তরীণ যোগদান ব্যবহার করতে পারি?
বাবা কামদেব

একটি জন্য কোন প্রয়োজন নেই INNER JOINযেহেতু teachersএবং studentsকোন বিদেশী কী সম্পর্ক আছে।
রোল্যান্ডোমাইএসকিউএলডিবিএ

6

আপনি এটি করার সবচেয়ে সহজ উপায় হ'ল সাব কোয়েরি ব্যবহার:

 INSERT INTO classroom(teacher_id,student_id)
 VALUES ((SELECT id FROM students WHERE s_name='sam'),
 (SELECT id FROM teacher WHERE t_name='david'));

1
INSERT INTO newtable(value1, value2, value3) 
SELECT value1N, value2N, value3N,(SELECT valueN4 FROM secondtable WHERE id='1') 
FROM firsttable WHERE id='1');

এটি রেজাল্ট ফর্মটি প্রথম টেবিলে রাখবে value1N, value2N, value3Nএবং সেকেন্ড টেবিল থেকে ফলাফল দেবেvalueN4

ফলাফল:

  • প্রথম টেবিল --- |username|password |name|--- (3 টি মান রয়েছে তবে আমরা একটি ব্যবহার করি)
  • দ্বিতীয় সারণী --- |id_number|Adress|tel|--- (3 টি মান রয়েছে, আমরা সমস্ত ব্যবহার করি)
  • ক্যোয়ারির পরে নতুন টেবিল পূরণ করা হবে --- |id_number|Adress|tel|username|----- (আমরা 4 টি মান পাই: দ্বিতীয় সারণী থেকে 3 এবং প্রথম টেবিল থেকে 1:
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.