ایس کیو ال جوئن

SQL join ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਤਾਂ ਕਿ ਦੋ ਜਾਂ ਵੱਧ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਸਿਰਲੇਖਾਂ ਦਰਮਿਆਨ ਸਬੰਧ ਦੇ ਅਧਾਰ `ਤੇ ਨਤੀਜੇ ਲਏ ਜਾ ਸਕਣ।

Join ਅਤੇ Key

ਕਦੇ-ਕਦੇ ਪੂਰੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਦੋ ਜਾਂ ਵੱਧ ਸ਼ੈਖਤੀਆਂ ਤੋਂ ਨਤੀਜੇ ਲੈਣਾ ਹੁੰਦਾ ਹੈ। ਇਸ ਲਈ ਅਸੀਂ join ਕਰਨਾ ਹੁੰਦਾ ਹੈ।

ਸਾਰੀਆਂ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਇੱਕ ਦੂਜੇ ਨੂੰ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਪ੍ਰਮੁੱਖ ਦੇ ਰੂਪ ਵਿੱਚ ਇੱਕ ਸ਼ਨਾਖਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਮੁੱਖ ਪ੍ਰਮੁੱਖ (Primary Key) ਇੱਕ ਸਿਰਲੇਖ ਹੈ, ਜਿਸ ਵਿੱਚ ਹਰ ਸ਼ੈਖਤੀ ਦੇ ਹਰ ਸ਼ੈਖਤੀ ਦਾ ਮੁੱਲ ਵਿਲੱਖਣ ਹੁੰਦਾ ਹੈ। ਇਸ ਵਿੱਚ, ਹਰ ਮੁੱਖ ਪ੍ਰਮੁੱਖ ਦਾ ਮੁੱਲ ਵਿਲੱਖਣ ਹੁੰਦਾ ਹੈ। ਇਸ ਕਰਕੇ ਹਰ ਸ਼ੈਖਤੀ ਦੇ ਸਾਰੇ ਸ਼ੈਖਤੀਆਂ ਨੂੰ ਬਿਨਾ ਉਨ੍ਹਾਂ ਦੀ ਸਾਰੀਆਂ ਸ਼ੈਖਤੀਆਂ ਦੀ ਬਰਾਬਰੀ ਦੇ ਕਰਨ ਦੇ ਬਿਨਾ ਹੀ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਸਾਰੀਆਂ ਸ਼ੈਖਤੀਆਂ ਦੇ ਆਪਸੀ ਸਬੰਧ ਕਰ ਸਕਦੇ ਹਾਂ।

ਅਗਲਾ "Persons" ਸਾਰੀਆਂ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਵੇਖੋ:

Id_P LastName FirstName ਅਡਰੈੱਸ ਸਿਟੀ
1 ਐਡਮਸ ਜਾਨ ਓਕਸਫੋਰਡ ਸਟ੍ਰੀਟ ਲੰਡਨ
2 ਬੁਸ਼ ਜੌਰਜ ਫਿਫਟਹ ਏਵੇਨਿਊ ਨਿਊਯਾਰਕ
3 ਕਾਰਟਰ ਥਾਮਸ ਚੰਗਾਨ ਸਟ੍ਰੀਟ ਬੀਜਿੰਗ

ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ "Id_P" ਸਿਰਲੇਖ Persons ਸਾਰੀਆਂ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਮੁੱਖ ਪ੍ਰਮੁੱਖ ਹੈ। ਇਹ ਮਤਲਬ ਹੈ ਕਿ ਕੋਈ ਵੀ ਦੋ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ Id_P ਨਹੀਂ ਹੋ ਸਕਦੇ ਜੋ ਇੱਕ ਦੂਜੇ ਨਾਲ ਮਿਲਣ ਵਾਲੇ ਹੋਣ। ਚਾਹੇ ਦੋ ਵਿਅਕਤੀਆਂ ਦੇ ਨਾਮ ਪੂਰੀ ਤਰ੍ਹਾਂ ਮਿਲਣ, Id_P ਵੀ ਉਨ੍ਹਾਂ ਨੂੰ ਅਲੱਗ-ਅਲੱਗ ਕਰ ਦੇਵੇਗਾ。

ਅਗਲਾ "Orders" ਸਾਰੀਆਂ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਵੇਖੋ:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ "Id_O" ਸਿਰਲੇਖ ਇਸ਼ਤਰੀਕਤਾ ਪਰਿਭਾਸ਼ਿਤ ਹੈ Orders ਸਾਰੀਆਂ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਮੁੱਖ ਪ੍ਰਮੁੱਖ, ਸਿੰਗਲ, ਮੁੱਖ ਪ੍ਰਮੁੱਖ ਸਿਰਲੇਖ "Id_P" ਉਸ ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਉਪਯੋਗ ਹੁੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ "Persons" ਸ਼ੈਖਤੀਆਂ ਵਿੱਚ ਵਿਅਕਤੀਆਂ ਦੀ ਸ਼ਨਾਖਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਬਿਨਾ ਕਿ ਉਨ੍ਹਾਂ ਦੇ ਸਹੀ ਨਾਮ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ。

ਧਿਆਨ ਰੱਖੋ, "Id_P" ਸਿਰਲੇਖ ਉੱਪਰ ਦੇ ਦੋ ਤਾਲਮੇਲ ਨੂੰ ਜੋੜਦਾ ਹੈ।

ਦੋ ਤਾਲਮੇਲ ਦਾ ਉਪਯੋਗ

ਅਸੀਂ ਦੋ ਤੋਂ ਸਾਰੇ ਸਮਾਚਾਰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਦੋ ਤੋਂ ਸਾਰੇ ਤਾਲਮੇਲ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ:

ਕਿਸ ਨੇ ਉਸ ਉਤਪਾਦ ਨੂੰ ਖਰੀਦਿਆ ਅਤੇ ਉਹ ਕੀ ਖਰੀਦਿਆ?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

ਨਤੀਜਾ ਸੈੱਟ:

LastName FirstName OrderNo
ਐਡਮਸ ਜਾਨ 22456
ਐਡਮਸ ਜਾਨ 24562
ਕਾਰਟਰ ਥਾਮਸ 77895
ਕਾਰਟਰ ਥਾਮਸ 44678

SQL JOIN - JOIN ਦੀ ਵਰਤੋਂ

ਉੱਪਰ ਦੇ ਤਰੀਕੇ ਤੋਂ ਇਲਾਵਾ, ਅਸੀਂ JOIN ਕੀਵਾਰਡ ਨੂੰ ਵੀ ਵਰਤ ਸਕਦੇ ਹਾਂ ਤਾਂ ਕਿ ਦੋ ਤੋਂ ਸਾਰੇ ਸਮਾਚਾਰ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾ ਸਕਣ

ਜੇਕਰ ਅਸੀਂ ਸਾਰੇ ਲੋਕਾਂ ਦੇ ਆਰਡਰ ਲਿਖਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਤਾਂ ਹੇਠ ਲਿਖੇ SELECT ਸਟੇਟਮੈਂਟ ਨੂੰ ਵਰਤ ਸਕਦੇ ਹਾਂ:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

ਨਤੀਜਾ ਸੈੱਟ:

LastName FirstName OrderNo
ਐਡਮਸ ਜਾਨ 22456
ਐਡਮਸ ਜਾਨ 24562
ਕਾਰਟਰ ਥਾਮਸ 77895
ਕਾਰਟਰ ਥਾਮਸ 44678

ਵੱਖ-ਵੱਖ ਸਕਿੱਲ JOIN

ਉੱਪਰ ਦੇ ਉਦਾਹਰਣ ਵਿੱਚ ਵਰਤੇ ਗਏ INNER JOIN (ਅੰਦਰੂਨੀ ਜੋੜ) ਤੋਂ ਇਲਾਵਾ, ਅਸੀਂ ਹੋਰ ਕਈ ਪ੍ਰਕਾਰਾਂ ਦੇ JOIN ਵੀ ਵਰਤ ਸਕਦੇ ਹਾਂ。

ਇਥੇ ਤੁਸੀਂ ਵਰਤਣ ਵਾਲੇ JOIN ਪ੍ਰਕਾਰਾਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਅੰਤਰ ਵਿੱਚ ਫਰਕ ਦਿਖਾਇਆ ਗਿਆ ਹੈ。

  • JOIN: ਕੋਈ ਵੀ ਮੈਚ ਮਿਲਦਾ ਹੈ ਤਾਂ ਹੀ ਰਾਸ਼ੀ ਵਾਪਸ ਆਉਂਦੀ ਹੈ
  • LEFT JOIN: ਸੱਦੇ ਹੋਣ ਜਾਂ ਨਾ ਹੋਣ, ਸੱਦੇ ਵਾਲੇ ਸਾਰੇ ਪੱਧਰ ਵਾਪਸ ਆਉਂਦੇ ਹਨ
  • RIGHT JOIN: ਸੱਦੇ ਹੋਣ ਜਾਂ ਨਾ ਹੋਣ, ਸੱਦੇ ਵਾਲੇ ਸਾਰੇ ਪੱਧਰ ਵਾਪਸ ਆਉਂਦੇ ਹਨ
  • FULL JOIN: ਹਰ ਇੱਕ ਤੋਂ ਮੈਚ ਮਿਲਦਾ ਹੈ ਤਾਂ ਹੀ ਰਾਸ਼ੀ ਵਾਪਸ ਆਉਂਦੀ ਹੈ