ການດຶງຂໍ້ມູນຈາກຕາຕະລາງຫຼາຍດ້ວຍ SQL Inner ຮ່ວມ

ພາຍໃນຮ່ວມກັບຂໍ້ມູນທີ່ສົ່ງຄືນທີ່ປາກົດຢູ່ໃນຖານຂໍ້ມູນສອງຫຼືຫຼາຍກວ່າ

ການເຂົ້າຮ່ວມພາຍໃນແມ່ນການນໍາໃຊ້ຫຼາຍທີ່ສຸດໃນ SQL. ພວກເຂົາເຈົ້າກັບຄືນມາພຽງແຕ່ຂໍ້ມູນທີ່ມີຢູ່ໃນຕາຕະລາງຖານຂໍ້ມູນສອງຫຼືຫຼາຍກວ່າ. ເງື່ອນໄຂການເຂົ້າຮ່ວມກໍານົດວ່າບັນທຶກໃດທີ່ຖືກຈັບຄູ່ກັນແລະຖືກລະບຸໃນເງື່ອນໄຂ WHERE. ຕົວຢ່າງເຊັ່ນຖ້າທ່ານຕ້ອງການບັນຊີລາຍຊື່ຂອງການແຂ່ງຂັນທີ່ຂັບລົດ / ລົດທີ່ທັງລົດແລະຂັບລົດຢູ່ໃນຕົວເມືອງດຽວກັນ, ການສອບຖາມ SQL ດັ່ງຕໍ່ໄປນີ້ເຮັດສໍາເລັດຫນ້າວຽກນີ້:

SELECT lastname, firstname, tag FROM driver, vehicles WHERE drivers.location = vehicles.location

ນີ້ແມ່ນຜົນໄດ້ຮັບຄື:

lastname firstname tag
----------- ------------ ----
Baker Roland H122JM
Smythe Michael D824HA
Smythe Michael P091YF
Jacobs Abraham J291QR
Jacobs Abraham L990MT

ໃຫ້ສັງເກດວ່າຜົນໄດ້ຮັບແມ່ນແທ້ສິ່ງທີ່ໄດ້ສະແຫວງຫາ. ມັນເປັນໄປໄດ້ທີ່ຈະປັບປຸງການສອບຖາມຕື່ມໂດຍກໍານົດເງື່ອນໄຂເພີ່ມເຕີມໃນເງື່ອນໄຂ WHERE. ສົມມຸດວ່າການສອບຖາມຕົ້ນສະບັບກົງກັບຄົນຂັບລົດທີ່ພວກເຂົາບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຂັບລົດ (ຄົນຂັບລົດກັບລົດແລະໃນທາງກັບກັນ). ທ່ານສາມາດໃຊ້ຄໍາຖາມຕໍ່ໄປນີ້ເພື່ອແກ້ໄຂບັນຫານີ້ໄດ້:

SELECT lastname, firstname, tag, vehicles.class FROM ຂັບລົດ, ຍານພາຫະນະ WHERE driver.location = vehicles.location AND driversclass = vehicles.class

ຕົວຢ່າງນີ້ກໍານົດຕາຕະລາງແຫຼ່ງສໍາລັບ attribute ຊັ້ນໃນ clause SELECT ເນື່ອງຈາກວ່າ class ບໍ່ສະຫຼຸບ - ມັນຈະປາກົດໃນຕາຕະລາງທັງສອງ. ລະຫັດມັກຈະລະບຸຄໍລໍາຂອງຕາຕະລາງທີ່ຄວນຈະຖືກລວມເຂົ້າໃນຜົນການສອບຖາມ. ໃນກໍລະນີນີ້, ມັນບໍ່ເຮັດໃຫ້ມີຄວາມແຕກຕ່າງ, ຍ້ອນວ່າຄໍລໍາແມ່ນຄືກັນແລະພວກມັນເຂົ້າຮ່ວມນໍາໃຊ້ເຄື່ອງຈັກທີ່ມີຄວາມແຕກຕ່າງກັນ. ຢ່າງໃດກໍຕາມ, ຖ້າຄໍລໍາມີຂໍ້ມູນທີ່ແຕກຕ່າງກັນ, ຄວາມແຕກຕ່າງນີ້ຈະສໍາຄັນ. ນີ້ແມ່ນຜົນຂອງການສອບຖາມນີ້:

lastname firstname tag class
---------- ------------ ---- ------
Baker Roland H122JM Car
Smythe Michael D824HA Truck
Jacobs Abraham J291QR Car

ແຖວທີ່ຫາຍໄປຈັບຄູ່ Michael Smythe ກັບລົດແລະ Abraham Jacobs ກັບລົດ, ພວກເຂົາບໍ່ໄດ້ຮັບອະນຸຍາດຂັບລົດ.

ນອກນັ້ນທ່ານຍັງສາມາດ ໃຊ້ການເຊື່ອມຕໍ່ພາຍໃນເພື່ອສົມທົບຂໍ້ມູນຈາກສາມຫຼືຫຼາຍກວ່າຕາຕະລາງ .