প্রাকৃতিক যোগদান এবং অভ্যন্তরীণ যোগদানের মধ্যে পার্থক্য


197

একটি প্রাকৃতিক যোগদান এবং একটি অভ্যন্তরীণ যোগদানের মধ্যে পার্থক্য কি?


3
এই প্রশ্নটি অন্যটির সদৃশ নয়, কারণ এটি জাতীয় বনাম প্রাকৃতিক যোগদানের বিষয়ে, যা অন্যটিতে সম্বোধন করা হয়নি।

1
একসময়, বাম, ডান, বাহ্যিক এবং অভ্যন্তরীণ যোগদানের মধ্যে পার্থক্য কী তা এর সদৃশ হিসাবে এটি বন্ধ ছিল , কিন্তু এই প্রশ্নটি অভ্যন্তরীণ যোগদান এবং প্রাকৃতিক যোগদানের মধ্যে পার্থক্যটি চিহ্নিত করে না।
জোনাথন লেফলার

উত্তর:


250

INNER JOIN এবং Natural JOIN এর মধ্যে একটি উল্লেখযোগ্য পার্থক্য হ'ল ফিরে আসা কলামগুলির সংখ্যা।

বিবেচনা:

TableA                           TableB
+------------+----------+        +--------------------+    
|Column1     | Column2  |        |Column1  |  Column3 |
+-----------------------+        +--------------------+
| 1          |  2       |        | 1       |   3      |
+------------+----------+        +---------+----------+

INNER JOINCOLUMN1 উপর TableA এবং TableB এর ফিরে আসবে

SELECT * FROM TableA AS a INNER JOIN TableB AS b USING (Column1);
SELECT * FROM TableA AS a INNER JOIN TableB AS b ON a.Column1 = b.Column1;
+------------+-----------+---------------------+    
| a.Column1  | a.Column2 | b.Column1| b.Column3|
+------------------------+---------------------+
| 1          |  2        | 1        |   3      |
+------------+-----------+----------+----------+

NATURAL JOINTableA এবং COLUMN1 উপর TableB ফেরত হবে:

SELECT * FROM TableA NATURAL JOIN TableB
+------------+----------+----------+    
|Column1     | Column2  | Column3  |
+-----------------------+----------+
| 1          |  2       |   3      |
+------------+----------+----------+

বারবার কলাম এড়ানো হয়।

(স্ট্যান্ডার্ড ব্যাকরণ থেকে AFAICT, আপনি প্রাকৃতিক যোগদানের সাথে যোগদানের কলামগুলি নির্দিষ্ট করতে পারবেন না; যোগদানটি কঠোরভাবে নাম ভিত্তিক Wikipedia উইকিপিডিয়া দেখুন ))

( ভিতরের একটি ঠকাই আছে আউটপুট অন্তর্ভুক্ত কর a.এবং b.যন্ত্রাংশ কলাম নামে হবে না; আপনি শুধু আছে চাই column1, column2, column1, column3শিরোনাম হিসাবে। )


2
আমার দুটি টেবিল টেবিলএ (কলাম 1, কলাম 2) এবং টেবিলবি (কলাম 2, কলাম 3) রয়েছে।
2 8

16
আউটপুটে কলামগুলি ভেঙ্গে যাওয়া কোনও প্রাকৃতিক যোগদানের ন্যূনতম-গুরুত্বপূর্ণ দিক। আপনার যে জিনিসগুলি জানতে হবে তা হ'ল (ক) এটি স্বয়ংক্রিয়ভাবে একই নামের ক্ষেত্রগুলিতে যোগদান করে এবং (খ) আপনি যখন এটি প্রত্যাশা করবেন তখন এটি আপনার এস *** আপ করবে। আমার পৃথিবীতে, প্রাকৃতিক যোগদান ব্যবহারকে বরখাস্ত করার ভিত্তি।

8
@ জোনফএলট্রেডস আপনি কী ঠিক কী NATURAL JOINনষ্ট করবে, কেন এটি অপ্রত্যাশিত এবং আপনি কী জগতে রয়েছেন সে সম্পর্কে আরও ব্যাখ্যা করতে পারেন ?
ব্রায়সন

35
এটি ব্যবহারকারী 166390 এর উত্তরে কিছুটা সম্বোধন করা হয়েছে। আপনি যদি একটি প্রাকৃতিক মধ্যে যোগদান বলুন Customersএবং Employees, উপর যোগদান EmployeeIDEmployeesএছাড়াও একটি ManagerIDক্ষেত্র আছে। সবকিছু জরিমানা. তারপরে, কোনও দিন, কেউ টেবিলে একটি ManagerIDক্ষেত্র যুক্ত করে Customers। আপনার যোগদানটি ভাঙ্গবে না (এটি একটি করুণা হবে), পরিবর্তে এটি এখন একটি দ্বিতীয় ক্ষেত্রকে অন্তর্ভুক্ত করবে এবং ভুলভাবে কাজ করবে । সুতরাং, একটি আপাতদৃষ্টিতে নিরীহ পরিবর্তন কেবল দূরত্ব সম্পর্কিত কিছুকে ভেঙে ফেলতে পারে। খুব খারাপ. প্রাকৃতিক যোগদানের একমাত্র উত্সাহটি সামান্য টাইপিং সাশ্রয় করে, এবং অবক্ষয়টি যথেষ্ট।

2
@ জনাথন, আপনার উত্তর সম্পর্কে, আপনি বলেছেন যে SELECT * FROM TableA INNER JOIN TableB USING (Column1)4 টি কলাম দেয়। এটি সঠিক নয় কারণ SELECT * FROM TableA INNER JOIN TableB USING (Column1)এবং SELECT * FROM TableA NATURAL JOIN TableBসমান, তারা উভয়ই 3 টি কলাম দেয়।
পেসারিয়ার

81
  • একটি ভেতরের যোগদানের হয় এক যেখানে ম্যাচিং সারি যোগদান সারণীর প্রথম টেবিল থেকে একটি সারিতে জন্য প্রয়োজন ফেরত পাঠাবে
  • একটি বাইরের যোগদানের এক যেখানে ম্যাচিং সারি যোগদান টেবিলে হয় না প্রথম টেবিল থেকে একটি সারিতে জন্য প্রয়োজন বোধ করা ফেরত পাঠাবে
  • একটি প্রাকৃতিক যোগদান হ'ল একটি জোড় (আপনি natural leftবা এটি থাকতে পারে natural right) যা জোয়ার মাপদণ্ডকে ধরে নেয় যেখানে উভয় সারণির ম্যাচে একই-নামযুক্ত কলামগুলি রয়েছে

আমি প্লেগের মতো প্রাকৃতিক যোগদানগুলিকে এড়িয়ে যাব, কারণ প্রাকৃতিক যোগদানগুলি হ'ল:

  • না মান SQL [এসকিউএল 92] এবং সেইজন্য না পোর্টেবল, বিশেষ করে পাঠযোগ্য নয় (সবচেয়ে এসকিউএল পরিকল্পনাটি দ্বারা) এবং সম্ভবত বিভিন্ন সরঞ্জাম / লাইব্রেরি দ্বারা সমর্থিত নয়
  • তথ্যবহুল নয়; স্কিমার উল্লেখ না করে আপনি কী কলামগুলিতে যোগদান করছেন তা বলতে পারবেন না
  • আপনার যোগদানের শর্তগুলি স্কিমা পরিবর্তনের জন্য অদৃশ্যভাবে দুর্বল - যদি একাধিক প্রাকৃতিক যোগদানের কলাম থাকে এবং এই জাতীয় একটি কলাম একটি টেবিল থেকে অপসারণ করা হয়, তবে কোয়েরিটি কার্যকর হবে তবে সম্ভবত সঠিকভাবে নয় এবং আচরণে এই পরিবর্তন নিরব থাকবে be
  • চেষ্টা খুব কম মূল্য; আপনি টাইপিংয়ের প্রায় 10 সেকেন্ডের সঞ্চয় করছেন

2
আমি মনে করি যে বহিরাগতের জন্য বাম / ডান উল্লেখ করা উচিত (যেহেতু বহিরাগতের উল্লেখ রয়েছে)। তবে অন্যথায়, দুর্দান্ত এবং সংক্ষিপ্ত: এটি কেবলমাত্র এসকিউএল রেকর্ডের চিত্রগুলি খুব মিস করছে।

2
প্রাকৃতিক বাম এবং প্রাকৃতিক অধিকারও বিদ্যমান। তবে হ্যাঁ, তাদের এড়িয়ে চলুন।
ম্যাটবাইলি

1
@ বোহেমিয়ান, "প্লেগের মতো এগুলি এড়াতে" সম্পর্কিত, প্রাকৃতিক যোগদানের জন্য বাস্তব ব্যবহারের কেস রয়েছে যার মাধ্যমে তারা কাজে আসে। mariadb.com/kb/en/sql-99/n Natural - NATURAL JOIN Checkouts
পেসারিয়ার

2
@ এসকিউএভোভেল আপনার মন্তব্যে অনেক ভুল আছে, বিশেষত এটি ভুল। যোগদান কলামগুলি "একটি নির্বাচিত তালিকায় নির্দিষ্ট" করা যাবে না । প্রাকৃতিক যোগদানের সংজ্ঞা হল * সমস্ত পছন্দযুক্ত কলামগুলিতে * যোগ দেওয়া। মাইএসকিউএল ডক থেকে: প্রাকৃতিক [বাম] দুটি টেবিলের সাথে যুক্ত শব্দার্থগতভাবে একটি অন্তর্গত যোগদানের বা একটি বাম জোয়ারের সাথে ইউএসিং ক্লজের সমতুল্য হিসাবে সংজ্ঞায়িত করা হয়েছে যা উভয় টেবিলে থাকা সমস্ত কলামের নাম দেয়। । এবং অন্য একটি জিনিস - বাস্তবে এটি অকেজো, কারণ এতে idযোগ দেওয়া সর্বব্যাপী এবং অকেজো; সাধারণ বিদেশী মূল নাম হয় tablename_id। প্রাকৃতিক যোগদানগুলি একটি খারাপ, খারাপ, খারাপ ধারণা।
বোহেমিয়ান

2
আমার ক্যোয়ারিতে কোনও ডাবল ফেরত কলাম নেই। এনজে শব্দার্থবিদ্যার অন্যতম সুবিধা হ'ল নকল কলামগুলি কখনই ফিরে আসে না। আপনার আগের জিজ্ঞাসাটি আমার চেয়ে "কম নিরাপদ" ছিল কারণ এটি ব্যর্থ হবে যদি "a" নামক একটি কলাম টি -2-এ যুক্ত করা হয় (কারণ অ-অ্যালিজেড জোনের শর্তটি অস্পষ্ট)। আমি সন্দেহ করি যে এনজে-র বিরুদ্ধে আপনার কুসংস্কারগুলি এমন কোনও ভিত্তিতে যে আপনি স্ট্যান্ডার্ড এসকিউএল যথাযথভাবে সমর্থিত এমন কোনও পণ্যটিতে চেষ্টা করে দেখেননি। এখানে প্রশ্নটি এসকিউএল সম্পর্কে, মাইএসকিউএল নয় - বেশ আলাদা জিনিস। আপনি এখনও নিজের উত্তরটি মানহীন বলে সঠিক করেন নি।
এনভোভেল

27

প্রাকৃতিক যোগদানটি টাইপ করা এড়াতে কেবল একটি শর্টকাট, এমন একটি অনুমান সহ যে যোগদানটি সহজ এবং একই নামের ক্ষেত্রগুলির সাথে মেলে।

SELECT
  *
FROM
  table1
NATURAL JOIN
  table2
    -- implicitly uses `room_number` to join

হিসাবে একই...

SELECT
  *
FROM
  table1
INNER JOIN
  table2
    ON table1.room_number = table2.room_number

আপনি শর্টকাট বিন্যাসের সাহায্যে যা করতে পারবেন না তা তবে আরও জটিল যোগদান করে ...

SELECT
  *
FROM
  table1
INNER JOIN
  table2
    ON (table1.room_number = table2.room_number)
    OR (table1.room_number IS NULL AND table2.room_number IS NULL)

2
@ জোনাথনলফলার - মাইএসকিউএল-এ অবশ্যই আছে।
ম্যাটবাইলি

3
ঠিক আছে - আকর্ষণীয়। আমি জিজ্ঞাসা করেছি কারণ এসকিউএল স্ট্যান্ডার্ড এটিকে অনুমতি দেয় না বলে মনে হয় (তবে এক্সটেনশনগুলি সর্বদা সম্ভব)।
জোনাথন লেফলার

কোনটি DBMS এই অ-মানক সিনট্যাক্স অনুমতি দেয়: NATURAL JOIN ... USING ()? মানটি হয় a NATURAL JOIN bবাa JOIN b USING (c)
ypercubeᵀᴹ

1
"টাইপ করা এড়াতে কেবল একটি শর্টকাট" একটি ভুল ধারণা ate এটি সর্বাধিক উল্লেখযোগ্য বৈশিষ্ট্য হ'ল এর ফলে সদৃশ কলামগুলির ফলাফল হয় না।
onedaywhen

... উদাহরণস্বরূপ, আপনার জিজ্ঞাসার ফলাফল যা প্রাকৃতিক যোগদান ব্যবহার করে কেবলমাত্র একটি কলামের নাম থাকবে room_number , যেখানে আপনার অভ্যন্তরীণ যোগগুলিতে দুটি কলামের নাম থাকবে room_number
onedaywhen

13

এসকিউএল অনেকভাবেই সম্পর্কের মডেলের প্রতি বিশ্বস্ত নয়। কোনও এসকিউএল ক্যোয়ারীর ফলাফল কোনও সম্পর্ক নয় কারণ এতে ডুপ্লিকেট নাম, 'বেনাম' (নামবিহীন) কলাম, নকল সারি, নাল ইত্যাদির সাথে কলাম থাকতে পারে এসকিউএল সারণিগুলিকে সম্পর্কের হিসাবে বিবেচনা করে না কারণ এটি কলাম ক্রম ইত্যাদির উপর নির্ভর করে etc.

NATURAL JOINএসকিউএল-এর পিছনে ধারণাটি হ'ল রিলেশনাল মডেলের আরও বিশ্বস্ত হওয়া সহজ করে তোলা। NATURAL JOINদুটি টেবিলের ফলাফলের নাম কলামগুলি ডি-ডুপ্লিকেট করে নাম থাকবে, সুতরাং কোনও বেনাম কলাম নেই। একইভাবে, UNION CORRESPONDINGএবং EXCEPT CORRESPONDINGউত্তরাধিকারে কলাম ক্রম উপর এসকিউএল এর নির্ভরতা মোকাবেলার জন্য সরবরাহ করা হয়UNION সিনট্যাক্সে ।

যাইহোক, সমস্ত প্রোগ্রামিং কৌশল হিসাবে এটি শৃঙ্খলা দরকারী প্রয়োজন। সাফল্যের জন্য একটি প্রয়োজনীয়তা NATURAL JOINধারাবাহিকভাবে নামযুক্ত কলামগুলির নামকরণ করা হয়, কারণ একই নামগুলির সাথে কলামগুলিতে যোগদান করা হয় (এটি লজ্জার বিষয় যে এসকিউএল-এ কলামগুলির নাম পরিবর্তনের জন্য বাক্য গঠনটি ভারবজ হয় তবে পার্শ্ব প্রতিক্রিয়াটি বেস টেবিলগুলিতে কলামের নামকরণ করার সময় শৃঙ্খলা উত্সাহিত করা এবং VIEWগুলি :)

নোট করুন একটি এসকিউএল NATURAL JOINএকটি ইকুই-জয়েন **, তবে এটি দরকারীতার কোনও বাধা নেই। বিবেচনা করুন যে NATURAL JOINএসকিউএল সমর্থিত যদি একমাত্র যোগদানের ধরণটি তখনও আপেক্ষিকভাবে সম্পূর্ণ হবে

যদিও এটি সত্য যে NATURAL JOINকোনওটি ব্যবহার INNER JOINএবং প্রজেকশন ( SELECT) ব্যবহার করে লেখা যেতে পারে , এটিও সত্য isINNER JOIN কোনওটি পণ্য ( CROSS JOIN) এবং বিধিনিষেধ ( WHERE) ব্যবহার করে লেখা যেতে পারে ; আরও নোট করুন যে NATURAL JOINকোনও কলামের নাম না থাকা সারণীগুলির মধ্যে একটি একই ফলাফল হিসাবে দেবে CROSS JOIN। সুতরাং যদি আপনি কেবল সম্পর্কের ফলাফলগুলিতে আগ্রহী হন (এবং কেন কখনও হয় না!) তবে NATURAL JOINআপনার একমাত্র যুক্ত হওয়ার প্রয়োজন। অবশ্যই, এটি সত্য যে কোনও ভাষা নকশার দৃষ্টিকোণ থেকে শর্টহেন্ড যেমন INNER JOINএবংCROSS JOIN তাদের মান রয়েছে তবে এটি বিবেচনা করুন যে প্রায় কোনও এসকিউএল কোয়েরিটি 10 ​​টি সিন্ট্যাক্টিক্যালি আলাদা, তবে শব্দার্থগতভাবে সমতুল্য, উপায়গুলিতে লেখা যেতে পারে এবং এটিই এসকিউএল অনুকূলিতকরণকে খুব শক্ত করে তোলে উন্নতি করতে.

এখানে কিছু উদাহরণ জিজ্ঞাস্য ( সাধারণ অংশ এবং সরবরাহকারী ডাটাবেস ব্যবহার করে ) যা শব্দার্থগতভাবে সমতুল্য:

SELECT *
  FROM S NATURAL JOIN SP;

-- Must disambiguate and 'project away' duplicate SNO attribute
SELECT S.SNO, SNAME, STATUS, CITY, PNO, QTY
  FROM S INNER JOIN SP 
          USING (SNO);                        

-- Alternative projection
SELECT S.*, PNO, QTY
  FROM S INNER JOIN SP 
          ON S.SNO = SP.SNO;

-- Same columns, different order == equivalent?!
SELECT SP.*, S.SNAME, S.STATUS, S.CITY
  FROM S INNER JOIN SP 
      ON S.SNO = SP.SNO;

-- 'Old school'
SELECT S.*, PNO, QTY
  FROM S, SP 
 WHERE S.SNO = SP.SNO;

** সম্পর্কিত প্রাকৃতিক যোগদান কোনও সমীকরণ নয়, এটির একটি অভিক্ষেপ। - ফিলিপ্সি


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

@ ফিলিপ্সি: ধন্যবাদ, আমি সংশোধন করেছি। অনুগ্রহ করে ভুল ধারণা এবং ভুল বোঝাবুঝির জন্য দয়া করে এটিকে বা আমার যে কোনও উত্তর - নির্দ্বিধায় প্রবেশ করুন। আমি এখনও আপনার কাছ থেকে শিখছি :)
onedaywhen

9

একটি জোড় NATURALএকটি নির্দিষ্ট INNER যোগদানের জন্য কেবল সংক্ষিপ্ত বাক্য গঠন - বা "ইকুই-জয়েন" - এবং, সিন্ট্যাক্সটি একবার মুছে ফেলা হলে, উভয়ই একই সম্পর্কযুক্ত বীজগণিত ক্রিয়াকে উপস্থাপন করে। OUTER( LEFT/ RIGHT) বা যোগদানের ক্ষেত্রে যেমন যোগ হয় তেমন কোনও "ভিন্ন ধরণের" নয় CROSS

উইকিপিডিয়ায় সম-যোগ বিভাগটি দেখুন :

একটি প্রাকৃতিক যোগদান ইক্যুয়ী-যোগগুলিতে আরও একটি বিশেষায়নের প্রস্তাব দেয়। যোগদানের টেবিলগুলিতে একই কলাম-নাম রয়েছে এমন উভয় টেবিলের সমস্ত কলামের সাথে তুলনা করে স্পষ্টভাবে উত্থিত হ'ল যোগদানের প্রাকটিকেট । ফলস্বরূপ যোগদান করা সারণিতে সমান-নামক কলামগুলির প্রতিটি জুটির জন্য কেবল একটি কলাম রয়েছে।

বেশিরভাগ বিশেষজ্ঞ সম্মত হন যে প্রাকৃতিক যোগদানগুলি বিপজ্জনক এবং তাই তাদের ব্যবহারকে দৃ strongly়ভাবে নিরুৎসাহিত করে। অজান্তেই নতুন কলাম যুক্ত হওয়ার পরে বিপদটি আসে, একই নামটিকে অন্য কলাম হিসাবে ...

এটি হ'ল, সমস্ত NATURALযোগদানকারীদের INNERযোগ হিসাবে লেখা যেতে পারে (তবে রূপান্তরটি সত্য নয়)। এটি করার জন্য, কেবল স্পষ্টভাবে ভবিষ্যদ্বাণী তৈরি করুন - যেমন USINGবাON - এবং জোনাথন লেফলার যেমন উল্লেখ করেছেন, পছন্দসই "নকল" এড়াতে পছন্দসই ফলাফল-সেট কলামগুলি নির্বাচন করুন।

শুভ কোডিং।


( NATURALশব্দ এছাড়াও প্রয়োগ করা যেতে পারে LEFTএবং RIGHTযোগদান করে, এবং একই প্রযোজ্য। একজন NATURAL LEFT/RIGHTযোগদানের একটি জন্য অল্প সিনট্যাক্স হল নির্দিষ্ট LEFT/RIGHT যোগদান করুন।)


2
"প্রাকৃতিক যোগসূত্রটি [স্নিপড]" ইক্যুই-জয়েন "এর জন্য সংক্ষিপ্ত বাক্য গঠন - এবং সিন্ট্যাক্সটি একবার মুছে ফেলা হলে উভয়ই একই সম্পর্কিত বীজগণিতকে উপস্থাপন করে" - আপনি সঠিক বলেছেন: এটি আপেক্ষিক বীজগণিতের সত্য হলেও আপনার উত্তরটি ভেঙে যায় answer তার পরে যেমন "বেশিরভাগ বিশেষজ্ঞরা সম্মত হন যে প্রাকৃতিক যোগদানগুলি বিপজ্জনক এবং তাই তাদের ব্যবহারকে দৃ strongly়ভাবে নিরুৎসাহিত করে" - যা সম্পর্কিত বীজগণিতের বিশেষজ্ঞরা বলছেন ?!
onedaywhen

2

প্রাকৃতিক যোগদান: এটি দুটি টেবিলের সমস্ত কলামের সংমিশ্রণ বা সম্মিলিত ফলাফল। এটি দ্বিতীয় টেবিলের প্রতি সম্মানের সাথে প্রথম সারণীর সমস্ত সারি ফিরিয়ে দেবে।

অভ্যন্তরীণ যোগদান: কলামের নামের কোনওটি দুটি টেবিলের মধ্যে একরকম না হলে এই জয়েনটি কাজ করবে


3
আমি মনে করি না যে আপনার উত্তরটি যথেষ্ট পরিষ্কার এবং এটি সংশোধন করতে একটি বড় পুনর্লিখন নেবে।
onedaywhen

0

একটি প্রাকৃতিক যোগদান যেখানে সমস্ত সাধারণ কলামগুলির ভিত্তিতে 2 টি টেবিল যুক্ত হয়।

সাধারণ কলাম: একটি কলাম যা উভয় টেবিলের একই নাম রয়েছে + উভয় সারণীতে সামঞ্জস্যপূর্ণ ডেটাটাইপ রয়েছে। আপনি কেবল = অপারেটর ব্যবহার করতে পারেন

একটি অভ্যন্তরীণ যোগদান যেখানে ওএন ক্লজে উল্লিখিত সাধারণ কলামগুলির ভিত্তিতে 2 টি টেবিল যুক্ত হয়।

সাধারণ কলাম: একটি কলাম যা উভয় টেবিলের সাথে সামঞ্জস্যপূর্ণ ডেটাটাইপ রয়েছে তবে একই নামের প্রয়োজন নেই। তোমার মত শুধুমাত্র কোন comparision অপারেটর ব্যবহার করতে পারেন =, <=, >=, <, >,<>


-2

পার্থক্যটি হল যে অন্তর্নিহিত (ইকুই / ডিফল্ট) যোগদান এবং প্রাকৃতিক যোগদান যে ন্যাচুআর্ল এ সাধারণ কলাম কমে জয় এক সময় প্রদর্শিত হবে তবে অভ্যন্তরীণ / ইকুই / ডিফল্ট / সাধারণ যোগে ডাবল সময় প্রদর্শিত হবে।


-2

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


কেন যোগদানের শর্ত নির্দিষ্ট করার প্রয়োজন নেই? কোন পরিস্থিতিতে কোনও অভ্যন্তরীণ অবস্থার শর্ত নির্দিষ্ট করে কার্টেসিয়ান পণ্যের মতো কিছু ঘটবে?
onedaywhen

বাহ্যিক এবং অভ্যন্তরীণ যোগদান "" প্রায় একই "আহ্বান করা একটি হালকা অবলম্বন imho .. সম্ভবত আপনি নিজের মূল্যায়ন বিস্তারিতভাবে বলতে পারেন?
TMOTTM

-3
mysql> SELECT  * FROM tb1 ;
+----+------+
| id | num  |
+----+------+
|  6 |   60 |
|  7 |   70 |
|  8 |   80 |
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
+----+------+
6 rows in set (0.00 sec)

mysql> SELECT  * FROM tb2 ;
+----+------+
| id | num  |
+----+------+
|  4 |   40 |
|  5 |   50 |
|  9 |   90 |
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
+----+------+
6 rows in set (0.00 sec)

ভেতরের যোগ দিতে :

mysql> SELECT  * FROM tb1 JOIN tb2 ; 
+----+------+----+------+
| id | num  | id | num  |
+----+------+----+------+
|  6 |   60 |  4 |   40 |
|  7 |   70 |  4 |   40 |
|  8 |   80 |  4 |   40 |
|  1 |    1 |  4 |   40 |
|  2 |    2 |  4 |   40 |
|  3 |    3 |  4 |   40 |
|  6 |   60 |  5 |   50 |
|  7 |   70 |  5 |   50 |
|  8 |   80 |  5 |   50 |
.......more......
return 36 rows in set (0.01 sec) 
AND NATURAL JOIN :

    mysql> SELECT  * FROM tb1 NATURAL JOIN tb2 ;
    +----+------+
    | id | num  |
    +----+------+
    |  1 |    1 |
    |  2 |    2 |
    |  3 |    3 |
    +----+------+
    3 rows in set (0.01 sec)

-4

অভ্যন্তরীণ যোগদান, দুটি সারণিতে যোগদান করুন যেখানে কলামের নাম একই।

প্রাকৃতিক যোগদান, দুটি সারণিতে যোগদান করুন যেখানে কলামের নাম এবং ডেটা টাইপ একই।


এটি সম্পূর্ণ ভুল। ক NATURAL JOIN(বহু বছর আগে বেশিরভাগ লোক দেখিয়েছে) হ'ল কলামের নাম একই। ডেটা টাইপ এক হতে হবে না। INNER JOINপ্রয়োজনের জন্য ব্যবহৃত ক্ষেত্রগুলির একই নাম নেই।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.