পাইথনে সম্পর্কিত টেবিল থেকে ডেটা পাওয়া
আসুন একটি কুয়েরি করি যা
সকল ব্যবহারকারীকে তাদের শহর সহ নিয়ে আসবে। এর জন্য
দরকার হবে LEFT
JOIN কমান্ড:
এর সিনট্যাক্স নিম্নরূপ:
sqlSELECT fields FROM table_name
LEFT JOIN related_table_name ON join_condition
WHERE selection_condition
আসুন এই কমান্ডের সিনট্যাক্সের পৃথক অংশগুলি বুঝে নেওয়া যাক।
ফিল্ডসমূহ
যেহেতু একাধিক টেবিল থেকে ডেটা নেওয়া হচ্ছে,
সেহেতু * দিয়ে সকল ফিল্ড নির্বাচন
কাজ করবে না। নিম্নলিখিত কুয়েরিটি শুধুমাত্র প্রধান টেবিল থেকে
ফিল্ড নির্বাচন করবে, কিন্তু সম্পর্কিত টেবিল থেকে নয়:
sqlSELECT *
সমস্ত টেবিল থেকে ডেটা নির্বাচন করার জন্য,
* এর আগে টেবিলের নাম উল্লেখ করতে হবে:
sqlSELECT users.*, cities.*
অথবা আমাদের প্রয়োজনীয় ফিল্ডগুলি টেবিলের নাম উল্লেখ করে তালিকাভুক্ত করা যেতে পারে:
sqlSELECT users.name, cities.name
এই দুটি পদ্ধতির একটি সমস্যা আছে। বিষয়টি হল, যদি টেবিলগুলির ফিল্ডের নাম একই হয়, তাহলে পাইথনের অ্যারেতে নামের সংঘাত হবে এবং শুধুমাত্র একটি ফিল্ড জিতবে, এবং দ্বিতীয়টি থাকবে না।
সমস্যার সমাধানের জন্য, সংঘাতপূর্ণ
নামগুলি as কমান্ডের মাধ্যমে পুনরায় নামকরণ করতে হবে:
sqlSELECT users.name, cities.name as city_name
সম্পর্ক
ON কমান্ডের পরে আমাদের অবশ্যই
উভয় টেবিলের সেই ফিল্ডগুলি উল্লেখ করতে হবে, যার মাধ্যমে সংযোগ স্থাপন করা হয়।
আমাদের ক্ষেত্রে এটি হবে id
ফিল্ডটি শহরের টেবিল থেকে এবং city_id ফিল্ডটি
ব্যবহারকারীদের টেবিল থেকে:
sqlON cities.id=users.city_id
কুয়েরি
সর্বশেষে, যে কুয়েরিটি ব্যবহারকারীদের তাদের শহর সহ নিয়ে আসবে তা নিম্নরূপ দেখাবে:
sqlSELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
ব্যবহারিক সমস্যা
ধরুন আপনার কাছে পণ্যের একটি টেবিল এবং তাদের বিভাগের একটি টেবিল আছে। একটি কুয়েরি লিখুন, যা পণ্যের নামগুলি তাদের বিভাগ সহ নিয়ে আসবে।