এসকিউএল 3 টি টেবিলের সাথে অন্তর্ভুক্ত?


330

আমি একটি ভিউতে 3 টেবিলগুলিতে যোগদানের চেষ্টা করছি; পরিস্থিতি এখানে:

আমার কাছে একটি টেবিল রয়েছে যাতে এই কলেজ ক্যাম্পাসে লাইভ করার জন্য আবেদন করা শিক্ষার্থীদের তথ্য রয়েছে। আমার কাছে আরও একটি সারণী রয়েছে যা প্রতিটি শিক্ষার্থীর জন্য হল পছন্দগুলি (তাদের মধ্যে 3) তালিকাভুক্ত করে। তবে এই পছন্দগুলির প্রত্যেকটি কেবল একটি আইডি নম্বর এবং আইডি নম্বরটির তৃতীয় টেবিলে একটি হলের নাম রয়েছে (এই ডাটাবেসটি ডিজাইন করেনি ...)।

খুব সুন্দর, আমি INNER JOINতাদের পছন্দগুলি এবং তাদের তথ্যগুলি টেবিলের সাথে রাখি , ফলাফলটি এমন কিছু ...

 John Doe | 923423 | Incoming Student | 005

কোথায় 005হবে HallID। সুতরাং এখন আমি এটি HallIDএকটি তৃতীয় টেবিলের সাথে মিলাতে চাই, যেখানে এই টেবিলটিতে একটি HallIDএবং HallName

অনেক সুন্দর, আমি চাই আমার ফলাফলটি এমন ...

 John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)

আমার কাছে বর্তমানে যা আছে তা এখানে:

SELECT
  s.StudentID, s.FName, 
  s.LName, s.Gender, s.BirthDate, s.Email, 
  r.HallPref1, r.HallPref2, r.HallPref3
FROM
  dbo.StudentSignUp AS s 
  INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
  INNER JOIN HallData.dbo.Halls AS h 
    ON r.HallPref1 = h.HallID

উত্তর:


503

আপনি নিম্নলিখিতটি করতে পারেন (আমি টেবিল ক্ষেত্র ইত্যাদিতে অনুমান করেছি)

SELECT s.studentname
    , s.studentid
    , s.studentdesc
    , h.hallname
FROM students s
INNER JOIN hallprefs hp
    on s.studentid = hp.studentid
INNER JOIN halls h
    on hp.hallid = h.hallid

একাধিক হলগুলির জন্য আপনার অনুরোধের ভিত্তিতে আপনি এটি এভাবে করতে পারেন। আপনি প্রতিটি ঘরের প্রিফ আইডির জন্য কেবলমাত্র আপনার হল টেবিলটিতে একাধিকবার যোগদান করেছেন:

SELECT     s.StudentID
    , s.FName
    , s.LName
    , s.Gender
    , s.BirthDate
    , s.Email
    , r.HallPref1
    , h1.hallName as Pref1HallName
    , r.HallPref2 
    , h2.hallName as Pref2HallName
    , r.HallPref3
    , h3.hallName as Pref3HallName
FROM  dbo.StudentSignUp AS s 
INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
INNER JOIN HallData.dbo.Halls AS h1 
    ON r.HallPref1 = h1.HallID
INNER JOIN HallData.dbo.Halls AS h2
    ON r.HallPref2 = h2.HallID
INNER JOIN HallData.dbo.Halls AS h3
    ON r.HallPref3 = h3.HallID

1
এটি কেবলমাত্র একটি পছন্দ দিয়ে কাজ করে, তবে আমি কীভাবে এটি এটিকে 3 টি পছন্দ দিয়ে কাজ করতে সম্পাদনা করতে চাই? (প্রতিটি পছন্দের জন্য একটি কলাম)
বব স্যান্ডার্স

1
@BobSanders মাত্র আমার উত্তর আপডেট, তারপর যদি আপনি HallPref সংখ্যা চাই না শুধু ঐ কলাম ড্রপ
Taryn

46
SELECT column_Name1,column_name2,......
  From tbl_name1,tbl_name2,tbl_name3
  where tbl_name1.column_name = tbl_name2.column_name 
  and tbl_name2.column_name = tbl_name3.column_name

27
মূল উত্তরগুলি কীভাবে অর্জন করতে হয় তার ওপিকে প্রদর্শন করার জন্য এই উত্তরের যুক্তিসঙ্গত ব্যাখ্যাের অভাব রয়েছে।
গেজেজে

41

আপনার যদি IDযোগ করার মতো একই সাথে 3 টি টেবিল থাকে তবে আমার মনে হয় এটি এমন হবে:

SELECT * FROM table1 a
JOIN table2 b ON a.ID = b.ID
JOIN table3 c ON a.ID = c.ID

*আপনি টেবিলগুলি থেকে কী পেতে চান তা দিয়ে প্রতিস্থাপন করুন।



3

আপনার কেবলমাত্র একটি দ্বিতীয় অভ্যন্তরীণ যোগদানের ID Numberদরকার যা এখন আপনার ID Numberসাথে থাকা তৃতীয় টেবিলের সাথে যুক্ত হয়। এরপরে, এর ID Numberদ্বারা Hall Nameএবং voilá দ্বারা প্রতিস্থাপন করুন :)


2
SELECT * 
FROM 
    PersonAddress a, 
    Person b,
    PersonAdmin c
WHERE a.addressid LIKE '97%' 
    AND b.lastname LIKE 'test%'
    AND b.genderid IS NOT NULL
    AND a.partyid = c.partyid 
    AND b.partyid = c.partyid;

2

প্রচুর প্রতিক্রিয়া হয়েছে তবে সামগ্রিক পাঠটি মনে হচ্ছে আপনি যেখানে ক্লজটিতে একাধিক জয়েন্টগুলি ব্যবহার করতে পারেন; এছাড়াও techonthenet.com (আমার বস এটি আমার কাছে এটি প্রস্তাবিত করেছিল, এটি আমি কীভাবে এটি পেয়েছি) ভাল এসকিউএল টিউটোরিয়াল থাকে যদি আপনার যদি অন্য কোনও প্রশ্ন থাকে এবং আপনি কেবল চেষ্টা করে এটি বের করতে চান।

SELECT table1.column1
FROM table1
WHERE table1 > 0 (or whatever you want to specify)
INNER JOIN table1 
ON table1.column1 = table2.column1

1

একই আইডি সহ 3 টি টেবিলের সাথে যোগ দেওয়ার জন্য এটি সঠিক ক্যোয়ারী **

select a.empname,a.empsalary,b.workstatus,b.bonus,c.dateofbirth from employee a, Report b,birth c where a.empid=b.empid and a.empid=c.empid and b.empid='103';

কর্মচারী প্রথম টেবিল। দ্বিতীয় সারণী রিপোর্ট। জন্ম তৃতীয় টেবিল


1
SELECT 
A.P_NAME AS [INDIVIDUAL NAME],B.F_DETAIL AS [INDIVIDUAL FEATURE],C.PL_PLACE AS [INDIVIDUAL LOCATION]
FROM 
[dbo].[PEOPLE] A
INNER JOIN 
[dbo].[FEATURE] B ON A.P_FEATURE = B.F_ID
INNER JOIN 
[dbo].[PEOPLE_LOCATION] C ON A.P_LOCATION = C.PL_ID

1

এই ক্যোয়ারীটি আপনার পক্ষে কাজ করবে

Select b.id as 'id', u.id as 'freelancer_id', u.name as 
'free_lancer_name', p.user_id as 'project_owner', b.price as 
'bid_price', b.number_of_days as 'days' from User u, Project p, Bid b 
where b.user_id = u.id and b.project_id = p.id

1
select products.product_id, product_name, price, created_at, image_name, categories.category_id, category_name,brands.brand_id, brand_name 
FROM products INNER JOIN categories USING (category_id) INNER JOIN brands USING(brand_id)

-5
select empid,empname,managename,[Management ],cityname  
from employees inner join Managment  
on employees.manageid = Managment.ManageId     
inner join CITY on employees.Cityid=CITY.CityId


id name  managename  managment  cityname
----------------------------------------
1  islam   hamza       it        cairo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.