If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
पिछले topic में आपने MySQL Inner Join के बारे में पढ़ा और समझा , इस topic में हम Left Join के बारे में बात करेंगे।
Actually Inner Join के लिए हमेशा Join करने के लिए , दूसरी table में record होना जरूरी होता है नहीं तो कोई record नहीं आएगा। जैसा कि नीचे दिए गए image को देखकर आप समझ सकते हैं।
लेकिन क्या हो अगर हमें तब भी records चाहिए अगर table में पहली table का कोई record न हो ? Well वहां पर हम Left Join
use करते हैं।
MySQL में left join use भी जो दो tables को जोड़ने के लिए किया जाता है , लेकिन यह सुनिश्चित करता है कि पहली table के सभी records को लिया जायेगा चाहे दूसरी table में उनका match है या नहीं। अगर मैच हुआ तो आपको दूसरे table के column की actual value मिल जाएगी otherwise NULL
मिलेगा।
suppose कीजिये हमारे पास दो tables हैं table1
और table2
, तो Left Join query के लिए Syntax कुछ इस तरह से होगा -
SELECT
column_list
FROM
table1
LEFT JOIN table2 ON
join_condition;
Explanation
यहां अगर table2
में कोई record नहीं भी मिलता है या हमारी join condition match नहीं करती है तो भी table1 के सभी records आ जायेंगे।
अब इसे और अच्छी तरह से समझने के लिए कुछ live examples देख लेते हैं ।
Suppose, हमारे पास users
name की एक table है , जिसमे कुछ इस तरह से records available हैं।
+----+-------------+ | id | name | +----+-------------+ | 1 | Tom | | 2 | Tom Holland | | 4 | john Doe | | 5 | John Quill | +----+-------------+
और एक दूसरी table भी है user_orders
नाम की जिसमे user के orders हैं कि user ने कौन सा product किस price पर buy किया है , और कुछ इस तरह से records मौजूद हैं।
+----+---------+---------+-------+ | id | user_id | product | total | +----+---------+---------+-------+ | 1 | 1 | Shoes | 455 | | 2 | 2 | Clothes | 200 | | 3 | 2 | Mobile | 20000 | | 4 | 1 | Grocery | 999 | | 5 | 1 | Books | 1100 | +----+---------+---------+-------+
मुझे सिर्फ ये पता करना है कि किसी user ने कुल कितने रूपये का order किया है , उसके लिए कुछ इस तरह से query होगी।
SELECT
users.id, users.name, SUM(user_orders.total) AS total_order
FROM users
LEFT JOIN
user_orders ON user_orders.user_id=users.id
GROUP BY users.id;
Output
+----+-------------+-------------+ | id | name | total_order | +----+-------------+-------------+ | 1 | Tom | 2554 | | 2 | Tom Holland | 20200 | | 4 | john Doe | NULL | | 5 | John Quill | NULL | +----+-------------+-------------+
Output में देख सकते हैं कि user id 4 , 5
के लिए user_orders
table में records नहीं है इसलिए हमें NULL
मिला है।
आप चाहे तो table name को AS keyword का use करके alias भी कर सकते हैं। जैसे नीचे दी गयी query भी same result generate करेगी।
SELECT
u.id, u.name, SUM(uo.total) AS total_order
FROM users AS u
LEFT JOIN
user_orders AS uo ON uo.user_id=u.id
GROUP BY u.id;
अब कुछ और Left Join
के use cases देख लेते हैं।
1. किसी user के द्वारा buy किये गए सभी products के name निकलने के लिए कुछ इस तरह से query होगी -
SELECT
users.id, users.name, GROUP_CONCAT(user_orders.product) AS buy_products
FROM users
LEFT JOIN
user_orders ON user_orders.user_id=users.id
GROUP BY users.id;
Output
+----+-------------+---------------------+ | id | name | buy_products | +----+-------------+---------------------+ | 1 | Tom | Books,Grocery,Shoes | | 2 | Tom Holland | Mobile,Clothes | | 4 | john Doe | NULL | | 5 | John Quill | NULL | +----+-------------+---------------------+
2. अगर check करना है कि किसी user ने कुछ buy किया है या नहीं , तो कुछ इस तरह से query होगी -
SELECT
users.name, IF(SUM(user_orders.total) > 0, 'Yes', 'NO') AS buy_something
FROM users
LEFT JOIN
user_orders ON user_orders.user_id=users.id
GROUP BY users.id;
Output
+-------------+---------------+ | name | buy_something | +-------------+---------------+ | Tom | Yes | | Tom Holland | Yes | | john Doe | NO | | John Quill | NO | +-------------+---------------+
तो कुछ तरह से हम MySQL में Left Join का use करते हैं , I know ऊपर दिए गए example में कुछ advance concept जैसे If , Sum या Group By use किये गए लेकिन tension not :) आगे आप इनके बारे में पढ़ेंगे।
I Hope, आपको Left Join
के बारे में अच्छे से समझ आ गया होगा।