Senior
Дар бораи намудҳои JOIN дар SQL гап занед ва фарқияти байни онҳоро шарҳ диҳед.
sobes.tech AI
Ҷавоб аз AI
Дар SQL, чанд навъ JOIN мавҷуд аст, ки имкон медиҳад маълумотҳоро аз ду ё бештар аз ду ҷадвал дар асоси шарти муайян пайваст кунанд.
Навъҳои асосии JOIN:
- INNER JOIN — танҳо он сабтҳоро бармегардонад, ки дар ҳарду ҷадвал мувофиқат доранд.
- LEFT JOIN (LEFT OUTER JOIN) — ҳамаи сабтҳоро аз ҷадвали чап ва мувофиқҳоро аз ҷадвали рост бармегардонад; агар мувофиқат набошад, майдонҳои ҷадвали рост NULL хоҳанд буд.
- RIGHT JOIN (RIGHT OUTER JOIN) — монанд ба LEFT JOIN, аммо ҳамаи сабтҳоро аз ҷадвали рост бармегардонад.
- FULL JOIN (FULL OUTER JOIN) — ҳамаи сабтҳоро аз ҳарду ҷадвал бармегардонад, ки дар он ҷо мувофиқат нест, NULL хоҳад буд.
Фарқият дар он аст, ки кадом сабтҳо дар ҳолати набудани мувофиқат нигоҳ дошта мешаванд:
- INNER JOIN сабтҳоро, ки мувофиқат надоранд, хориҷ мекунад.
- LEFT JOIN ҳамаи сабтҳоро аз ҷадвали чап нигоҳ медорад.
- RIGHT JOIN ҳамаи сабтҳоро аз ҷадвали рост нигоҳ медорад.
- FULL JOIN ҳамаи сабтҳоро аз ҳарду ҷадвал нигоҳ медорад.
Масалан:
SELECT * FROM A
INNER JOIN B ON A.id = B.a_id;
SELECT * FROM A
LEFT JOIN B ON A.id = B.a_id;
SELECT * FROM A
RIGHT JOIN B ON A.id = B.a_id;
SELECT * FROM A
FULL JOIN B ON A.id = B.a_id;
Дар Go, ҳангоми кор бо базаҳои додаҳо тавассути саволҳои SQL ё ORM, муҳим аст, ки фаҳмед, ки кадом JOIN-ро истифода баред, то маълумоти заруриро ба даст оред ва саволҳоро оптималӣ гардонед.