SQL JOIN
- ຫນ້າທີ່ກ່ອນ SQL Aliases
- ຫນ້າຫນັງ SQL Inner Join
SQL join ຖືກນຳໃຊ້ເພື່ອຊອກຫາຂໍ້ມູນຈາກສອງຕະຫຼາດຫຼາຍລົງ ເພື່ອປະກອບຄວາມພົບກັນລະຫວ່າງສະເຕຣຍຂອງຕະຫຼາດ.
Join ແລະ Key
ບາງຄັ້ງເພື່ອຄົ້ນພົບຜົນທົດສອບທີ່ຫຼາຍຂຶ້ນຫຼາຍລົງ ພວກເຮົາຕ້ອງໄດ້ຊອກຫາຜົນຈາກສອງຕະຫຼາດຫຼາຍລົງ. ພວກເຮົາຕ້ອງດຳເນີນການ join.
ຕະຫຼາດຂອງຖານຂໍ້ມູນສາມາດທົດສອນກັນໂດຍການໃຊ້ສະເຕຣຍ. ຮູບແບບສຳຄັນ (Primary Key) ແມ່ນສະເຕຣຍທີ່ໃນແຕ່ລະຊັບສິນຂອງສະເຕຣຍຈະມີຄວາມຫຼາຍຫຼາຍ. ໃນຕະຫຼາດນີ້ ຄວາມຫຼາຍຫຼາຍຂອງຮູບແບບສຳຄັນຈະມີຄວາມຫຼາຍຫຼາຍ. ສິ່ງນີ້ຖືກນຳໃຊ້ເພື່ອມັດຖະກັນຂໍ້ມູນລະຫວ່າງຕະຫຼາດຂອງຖານຂໍ້ມູນໂດຍບໍ່ຕ້ອງການທົດສອນຂໍ້ມູນທັງໝົດຂອງຕະຫຼາດ.
ບອກວ່າ "Persons" ສະເຕຣຍ:
Id_P | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | ລອນດອນ |
2 | Bush | George | Fifth Avenue | ນິວຍອກ |
3 | Carter | Thomas | ຖະຫຼົກຈັນ | ບາງຈຽງ |
ບໍ່ກະຕືລັງບອກວ່າ "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 ແລະ ພ້ອມກັນ "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 |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 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 |
---|---|---|
Adams | John | 22456 |
Adams | John | 24562 |
Carter | Thomas | 77895 |
Carter | Thomas | 44678 |
ການຕິດຕໍ່ JOIN SQL
ກັບ JOIN INNER JOIN ທີ່ພວກເຮົາໄດ້ໃຊ້ໃນຕົວຢ່າງກ່າວຫານີ້ ພວກເຮົາຍັງສາມາດໃຊ້ການຕິດຕໍ່ອື່ນໆ.
ລາຍການທີ່ທ່ານສາມາດນຳໃຊ້ JOIN ແລະ ຄວາມແຕກຕ່າງລະຫວ່າງພວກມັນ.
- JOIN: ຖ້າມີການຕົກລົງຈາກອັນດັບບໍ່ຕໍ່າຫນຶ່ງ ຈະກັບຄືນອັນດັບ
- LEFT JOIN: ເຖິງວ່າບໍ່ມີການຕົກລົງຈາກປີກລັງຈະກັບຄືນອັນດັບທັງໝົດ
- RIGHT JOIN: ເຖິງວ່າບໍ່ມີການຕົກລົງຈາກຂອງປີກລັງຈະກັບຄືນອັນດັບທັງໝົດ
- FULL JOIN: ພຽງແຕ່ຖ້າໜຶ່ງໃນອັນດັບມີການຕົກລົງຈະກັບກັບ ຈະກັບຄືນອັນດັບ
- ຫນ້າທີ່ກ່ອນ SQL Aliases
- ຫນ້າຫນັງ SQL Inner Join