স্ক্র্যাচ থেকে মাইক্রোসফট অ্যাক্সেস এসকিউএল প্রশ্নগুলি কীভাবে লিখবেন

স্ক্র্যাচ থেকে মাইক্রোসফট অ্যাক্সেস এসকিউএল প্রশ্নগুলি কীভাবে লিখবেন

মাইক্রোসফট অ্যাক্সেস যুক্তিসঙ্গতভাবে পুরো মাইক্রোসফট অফিস স্যুটের সবচেয়ে শক্তিশালী হাতিয়ার, তবুও এটি অফিস পাওয়ার ব্যবহারকারীদের রহস্যময় করে (এবং কখনও কখনও ভীত করে)। ওয়ার্ড বা এক্সেলের চেয়ে খাড়া লার্নিং কার্ভের সাথে, এই টুলটির ব্যবহারে যে কেউ কীভাবে মাথা rapেকে রাখতে পারে? এই সপ্তাহে, ব্রুস এপার আমাদের পাঠকদের একজনের এই প্রশ্নের দ্বারা উদ্ভূত কিছু বিষয় দেখবেন।





একজন পাঠক জিজ্ঞাসা করেন:

মাইক্রোসফট অ্যাক্সেসে একটি ক্যোয়ারী লিখতে আমার সমস্যা হচ্ছে আমি দুটি প্রোডাক্ট টেবিল সহ একটি ডাটাবেস পেয়েছি যার মধ্যে একটি সাধারণ কলাম সংখ্যাসূচক পণ্য কোড এবং একটি সংশ্লিষ্ট পণ্যের নাম আছে। সারণী বি তে আমি ফলাফল নামের একটি কলাম যোগ করতে চাই যার মধ্যে টেবিল এ থেকে পণ্যের নাম আছে যদি এটি বিদ্যমান থাকে এবং টেবিল বি থেকে পণ্যের নাম যখন এটি টেবিল এ না থাকে তাহলে আপনার কোন পরামর্শ আছে?





ব্রুস এর উত্তর:

মাইক্রোসফট অ্যাক্সেস একটি ডেটাবেস ম্যানেজমেন্ট সিস্টেম (ডিবিএমএস) যা উইন্ডোজ এবং ম্যাক উভয় মেশিনে ব্যবহারের জন্য ডিজাইন করা হয়েছে। এটি ডেটা প্রসেসিং এবং স্টোরেজের জন্য মাইক্রোসফটের জেট ডাটাবেস ইঞ্জিন ব্যবহার করে। এটি ব্যবহারকারীদের জন্য একটি গ্রাফিক্যাল ইন্টারফেস প্রদান করে যা স্ট্রাকচার্ড ক্যোয়ারী ল্যাঙ্গুয়েজ (এসকিউএল) বোঝার প্রয়োজনীয়তা প্রায় দূর করে।





এসকিউএল হ'ল কমান্ড ল্যাঙ্গুয়েজ যা ডাটাবেসে সংরক্ষিত তথ্য যোগ, মুছে, আপডেট এবং ফেরত দেওয়ার পাশাপাশি মূল ডাটাবেস উপাদানগুলি যেমন টেবিল বা সূচক যোগ, মুছে ফেলা বা পরিবর্তন করার জন্য ব্যবহৃত হয়।

শুরু

যদি আপনার ইতিমধ্যেই অ্যাক্সেস বা অন্য RDBMS- এর সাথে কিছু পরিচিতি না থাকে, আমি আপনাকে এগিয়ে যাওয়ার আগে এই সম্পদগুলি দিয়ে শুরু করার পরামর্শ দেব:



এই নিবন্ধগুলিতে প্রদত্ত ধারণাগুলির প্রাথমিক ধারণা থাকা নিম্নলিখিতগুলি হজম করা কিছুটা সহজ করে তুলবে।

ডাটাবেস সম্পর্ক এবং স্বাভাবিককরণ

কল্পনা করুন আপনি একটি কোম্পানি চালাচ্ছেন যা সারা বিশ্বে 50 টি ভিন্ন ধরণের উইজেট বিক্রি করছে। আপনার ক্লায়েন্টের সংখ্যা 1,250 এবং গড়ে মাসে এই ক্লায়েন্টদের কাছে 10,000 উইজেট বিক্রি করুন। আপনি বর্তমানে এই সমস্ত বিক্রয় ট্র্যাক করতে একটি একক স্প্রেডশীট ব্যবহার করছেন - কার্যকরভাবে একটি একক ডাটাবেস টেবিল। এবং প্রতি বছর আপনার স্প্রেডশীটে হাজার হাজার সারি যোগ করে।





উপরের ছবিগুলো অর্ডার ট্র্যাকিং স্প্রেডশীটের অংশ যা আপনি ব্যবহার করছেন। এখন বলুন এই ক্লায়েন্ট উভয়ই আপনার কাছ থেকে বছরে কয়েকবার উইজেট কিনে তাই আপনার কাছে তাদের উভয়ের জন্য অনেক বেশি সারি আছে।





যদি জোয়ান স্মিথ টেড বেইন্সকে বিয়ে করে এবং তার উপাধি নেয়, তবে তার নাম সম্বলিত প্রতিটি সারি এখন পরিবর্তন করা দরকার। আপনার যদি 'জোয়ান স্মিথ' নামের দুটি ভিন্ন ক্লায়েন্ট থাকে তবে সমস্যাটি আরও জটিল হয়। মোটামুটি সাধারণ ইভেন্টের কারণে আপনার বিক্রয় ডেটা সামঞ্জস্যপূর্ণ রাখা অনেক কঠিন হয়ে পড়েছে।

একটি ডাটাবেস ব্যবহার করে এবং ডেটা স্বাভাবিক করে, আমরা আইটেমগুলিকে একাধিক টেবিলে আলাদা করতে পারি যেমন ইনভেন্টরি, ক্লায়েন্ট এবং অর্ডার।

আমাদের উদাহরণের ক্লায়েন্ট অংশের দিকে তাকিয়ে, আমরা ক্লায়েন্টের নাম এবং ক্লায়েন্ট ঠিকানার জন্য কলামগুলি সরিয়ে একটি নতুন টেবিলে রাখব। উপরের ছবিতে, আমি আরও ভালভাবে তথ্য ভাঙ্গার জন্য আরও দানাদার অ্যাক্সেসের জন্য জিনিসগুলি ভেঙে ফেলেছি। নতুন টেবিলে একটি প্রাথমিক কী (ক্লায়েন্টআইডি) এর জন্য একটি কলাম রয়েছে - একটি সংখ্যা যা এই টেবিলের প্রতিটি সারিতে অ্যাক্সেস করতে ব্যবহৃত হবে।

মূল টেবিলে যেখানে আমরা এই ডেটাটি সরিয়ে দিয়েছি, আমরা একটি বিদেশী কী (ক্লায়েন্টআইডি) এর জন্য একটি কলাম যুক্ত করব যা এই নির্দিষ্ট ক্লায়েন্টের জন্য তথ্য সম্বলিত সঠিক সারির সাথে সংযুক্ত।

এখন, যখন জোয়ান স্মিথ তার নাম পরিবর্তন করে জোয়ান বেইন্স রাখেন, তখন পরিবর্তনটি কেবল একবার ক্লায়েন্ট টেবিলে করা দরকার। যোগদানকৃত টেবিল থেকে অন্য প্রতিটি রেফারেন্স সঠিক ক্লায়েন্টের নাম টানবে এবং একটি রিপোর্ট যা জোয়ান গত 5 বছর ধরে যা কিনেছে তা দেখছে যে প্রতিবেদনটি কীভাবে তৈরি করা হয় তা পরিবর্তন না করেই তার প্রথম এবং বিবাহিত নামের অধীনে সমস্ত অর্ডার পাবে ।

একটি অতিরিক্ত সুবিধা হিসাবে, এটি স্টোরেজের সামগ্রিক পরিমাণ হ্রাস করে।

প্রকারভেদে যোগ দিন

এসকিউএল পাঁচটি ভিন্ন ধরনের যোগদানকে সংজ্ঞায়িত করে: অভ্যন্তরীণ, বাম বাহ্যিক, ডান বাহির, সম্পূর্ণ বাহ্যিক এবং ক্রস। SQL স্টেটমেন্টে OUTER কীওয়ার্ড alচ্ছিক।

মাইক্রোসফট অ্যাক্সেস INNER (ডিফল্ট), বাম বাহির, ডান বাইরের এবং ক্রস ব্যবহারের অনুমতি দেয়। FULL OUTER এইভাবে সমর্থিত নয়, কিন্তু LEFT OUTER, UNION ALL, এবং RIGHT OUTER ব্যবহার করে, এটি আরো CPU চক্র এবং I/O অপারেশনের খরচ দিয়ে জাল করা যায়।

একটি CROSS যোগদান আউটপুট বাম টেবিলের প্রতিটি সারি ডান টেবিলের প্রতিটি সারির সাথে যুক্ত থাকে। ডাটাবেস সার্ভারগুলির লোড টেস্টিংয়ের সময় আমি শুধুমাত্র একটি ক্রস যোগদান করতে দেখেছি।

আসুন দেখে নেওয়া যাক কিভাবে মৌলিক যোগদান কাজ করে, তারপর আমরা আমাদের প্রয়োজন অনুসারে তাদের পরিবর্তন করব।

চলুন শুরু করা যাক দুটি টেবিল তৈরি করে, ProdA এবং ProdB, নিম্নলিখিত নকশা বৈশিষ্ট্য সঙ্গে।

স্বয়ংক্রিয় সংখ্যা হল স্বয়ংক্রিয়ভাবে বর্ধিত লম্বা পূর্ণসংখ্যা যা এন্ট্রিতে নির্ধারিত হয় কারণ সেগুলি টেবিলে যোগ করা হয়। পাঠ্য বিকল্পটি সংশোধন করা হয়নি, তাই এটি 255 অক্ষর পর্যন্ত একটি পাঠ্য স্ট্রিং গ্রহণ করবে।

এখন, তাদের কিছু ডেটা দিয়ে পপুলেট করুন।

3 যোগদান প্রকারগুলি কীভাবে কাজ করে তার পার্থক্য দেখানোর জন্য, আমি ProdA থেকে 1, 5 এবং 8 টি এন্ট্রি মুছে ফেলেছি।

পরবর্তী, একটি নতুন প্রশ্ন তৈরি করুন গিয়ে তৈরি করুন> ক্যোয়ারী ডিজাইন । শো টেবিল ডায়ালগ থেকে উভয় টেবিল নির্বাচন করুন এবং যোগ করুন ক্লিক করুন , তারপর বন্ধ

টেবিল ProdA তে ProductID- এ ক্লিক করুন, টেবিল ProdB- এ ProductID- এ টেনে আনুন এবং টেবিলের মধ্যে সম্পর্ক তৈরি করতে মাউস বোতামটি ছেড়ে দিন।

আইটেম এবং যোগদান বৈশিষ্ট্য নির্বাচন করুন

ডিফল্টরূপে, যোগদান টাইপ 1 (INNER) নির্বাচন করা হয়। অপশন 2 একটি বাম বাহিরে যোগদান এবং 3 একটি সঠিক বাইরের যোগদান।

আমরা প্রথমে INNER যোগদান দেখব, তাই ডায়ালগ খারিজ করতে ঠিক আছে ক্লিক করুন।

ক্যোয়ারী ডিজাইনারে, ড্রপ-ডাউন তালিকা থেকে আমরা যে ক্ষেত্রগুলি দেখতে চাই তা নির্বাচন করুন।

যখন আমরা ক্যোয়ারী চালাই (ফিতায় লাল বিস্ময়বোধক বিন্দু), এটি প্রথম টেবিলে ProdA থেকে টেবিল ProdA এবং দ্বিতীয়টিতে ProdB এর মান সহ উভয় টেবিল থেকে ProductName ক্ষেত্র দেখাবে।

লক্ষ্য করুন ফলাফল শুধুমাত্র মান দেখায় যেখানে ProductID উভয় টেবিলে সমান। যদিও টেবিল ProdB তে ProductID = 1 এর জন্য একটি এন্ট্রি আছে, এটি ফলাফলগুলিতে প্রদর্শিত হয় না কারণ ProductID = 1 সারণী ProdA তে বিদ্যমান নেই। ProductID = 11 এর ক্ষেত্রেও এটি প্রযোজ্য। এটি টেবিল ProdA তে বিদ্যমান কিন্তু ProdB সারণীতে নেই

রিবনে ভিউ বোতামটি ব্যবহার করে এবং এসকিউএল ভিউতে স্যুইচ করে, আপনি এই ফলাফল পেতে ব্যবহৃত ডিজাইনার দ্বারা তৈরি এসকিউএল প্রশ্ন দেখতে পারেন।

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA INNER JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

ডিজাইন ভিউতে ফিরে যাওয়া, যোগদানের ধরন পরিবর্তন করে 2 (লেফট আউট)। ফলাফল দেখতে ক্যোয়ারী চালান।

আপনি দেখতে পাচ্ছেন, টেবিলে ProdA- এর প্রতিটি এন্ট্রি ফলাফলে উপস্থাপন করা হয়, যখন ProdB- এ কেবলমাত্র যেগুলি মেলে এমন প্রোডাক্টআইডি এন্ট্রি আছে টেবিলে ProdB- এ দেখা যায়।

ProdB.ProductName কলামের ফাঁকা স্থান হল একটি বিশেষ মান (NULL) যেহেতু টেবিল ProdB- এ কোন মিলের মান নেই। এটি পরে গুরুত্বপূর্ণ প্রমাণিত হবে।

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA LEFT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

তৃতীয় ধরনের যোগদানের (রাইট আউট) সাথে একই জিনিস চেষ্টা করুন।

ফলাফলগুলি টেবিল ProdB থেকে সবকিছু দেখায় যখন এটি ফাঁকা (NULL নামে পরিচিত) মানগুলি দেখায় যেখানে ProdA টেবিলের মিলের মান নেই। এখন পর্যন্ত, এটি আমাদের পাঠকের প্রশ্নে কাঙ্ক্ষিত ফলাফলের সবচেয়ে কাছাকাছি নিয়ে আসে।

SELECT ProdA.ProductName, ProdB.ProductName FROM ProdA RIGHT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

একটি প্রশ্নে ফাংশন ব্যবহার করা

একটি ফাংশনের ফলাফল একটি প্রশ্নের অংশ হিসাবেও ফেরত দেওয়া যেতে পারে। আমরা আমাদের ফলাফল সেটে 'ফলাফল' নামে একটি নতুন কলাম দেখতে চাই। এর মান হবে টেবিল ProdA এর ProductName কলামের বিষয়বস্তু যদি ProdA এর মান থাকে (এটি শূন্য নয়), অন্যথায় এটি টেবিল ProdB থেকে নেওয়া উচিত।

তাত্ক্ষণিক IF (IIF) ফাংশন এই ফলাফল তৈরি করতে ব্যবহার করা যেতে পারে। ফাংশনটি তিনটি প্যারামিটার নেয়। প্রথমটি এমন একটি শর্ত যা অবশ্যই একটি সত্য বা মিথ্যা মূল্যায়ন করতে হবে। দ্বিতীয় প্যারামিটার হল শর্তটি সত্য হলে ফেরত দেওয়া মান, এবং তৃতীয় প্যারামিটার হল শর্তটি মিথ্যা হলে ফেরত দেওয়া মান।

আমাদের পরিস্থিতির জন্য সম্পূর্ণ ফাংশন নির্মাণ এই মত দেখাচ্ছে:

IIF(ProdA.ProductID Is Null, ProdB.ProductName,ProdA.ProductName)

লক্ষ্য করুন যে শর্তের প্যারামিটার সমতা পরীক্ষা করে না। একটি ডাটাবেসে একটি শূন্য মানের একটি মান নেই যা অন্য নাল সহ অন্য কোন মানের সাথে তুলনা করা যেতে পারে। অন্য কথায়, নাল নলের সমান নয়। কখনো। এটিকে অতিক্রম করার জন্য, আমরা পরিবর্তে 'ইস' কীওয়ার্ড ব্যবহার করে মানটি পরীক্ষা করি।

আমরা 'ইজ নট নাল' ব্যবহার করতে পারতাম এবং একই ফলাফল পেতে সত্য এবং মিথ্যা প্যারামিটারের ক্রম পরিবর্তন করতে পারতাম।

ক্যোয়ারী ডিজাইনারে এটি রাখার সময়, আপনাকে অবশ্যই পুরো ফাংশনটি ফিল্ড: এন্ট্রিতে টাইপ করতে হবে। কলাম 'ফলাফল' তৈরি করতে এটি পেতে, আপনাকে একটি উপনাম ব্যবহার করতে হবে। এটি করার জন্য, 'ফলাফল:' দিয়ে ফাংশনটি উপস্থাপন করুন যেমনটি নিম্নলিখিত স্ক্রিনশটে দেখা গেছে।

এটি করার জন্য সমতুল্য এসকিউএল কোড হবে:

SELECT ProdA.ProductName, ProdB.ProductName, IIF(ProdA.ProductID Is Null,ProdB.ProductName,ProdA.ProductName) AS Results FROM ProdA RIGHT JOIN ProdB ON ProdA.ProductID = ProdB.ProductID;

এখন, যখন আমরা এই প্রশ্নটি চালাব, এটি এই ফলাফলগুলি তৈরি করবে।

কিভাবে গুগল ড্রাইভে পিডিএফ ফাইল মার্জ করা যায়

এখানে আমরা প্রতিটি এন্ট্রির জন্য দেখি যেখানে টেবিল ProdA এর একটি মান আছে, সেই মান ফলাফল কলামে প্রতিফলিত হয়। যদি ProdA টেবিলে কোন এন্ট্রি না থাকে, ProdB থেকে এন্ট্রি ফলাফলগুলিতে প্রদর্শিত হয় যা ঠিক আমাদের পাঠক জিজ্ঞাসা করেছেন।

মাইক্রোসফট অ্যাক্সেস শেখার জন্য আরো সম্পদের জন্য, জোয়েল লি এর মাইক্রোসফট অ্যাক্সেস কিভাবে শিখবেন তা দেখুন: 5 টি বিনামূল্যে অনলাইন সম্পদ।

শেয়ার করুন শেয়ার করুন টুইট ইমেইল এটি কি উইন্ডোজ 11 এ আপগ্রেড করার যোগ্য?

উইন্ডোজ নতুন করে ডিজাইন করা হয়েছে। কিন্তু এটি কি আপনাকে উইন্ডোজ 10 থেকে উইন্ডোজ 11 এ স্থানান্তরিত করার জন্য যথেষ্ট?

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রমোদ
  • বিশেষজ্ঞদের জিজ্ঞাসা করুন
লেখক সম্পর্কে ব্রুস এপার(13 নিবন্ধ প্রকাশিত)

ব্রুস 70 -এর দশক থেকে ইলেকট্রনিক্স, 80 -এর দশকের গোড়ার দিক থেকে কম্পিউটার নিয়ে খেলছেন, এবং প্রযুক্তি সম্পর্কে প্রশ্নের সঠিক উত্তর দিয়েছেন যা তিনি পুরো সময় ব্যবহার করেননি বা দেখেননি। তিনি গিটার বাজানোর চেষ্টা করে নিজেকে বিরক্ত করেন।

ব্রুস এপার থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন