SQL хүснэгт дэх дотоод холболтыг ашиглах удирдамж Олон хүснэгтээс группын өгөгдлийг бүлэглэх

SQL Inner Joins ашиглан гурав буюу түүнээс олон хүснэгтээс өгөгдлийг нэгтгэх

Гурван болон түүнээс олон хүснэгтээс өгөгдлийг нэгтгэхийн тулд SQL JOIN мэдэгдлийг ашиглаж болно. SQL JOIN нь маш уян хатан бөгөөд олон тооны хүснэгтүүдээс өгөгдлийг нэгтгэхэд хүчирхэг ажиллагаатай байдаг. Та гурван төрлийн хүснэгтээс үр дүнг нэгтгэх боломжтой SQL мэдэгдлийг харъя.

Дотоодын жишээн дээр

Жишээлбэл, жолооч нарыг нэг ширээн дээр нэг ширээ, тээврийн хэрэгсэлтэй холбох хүснэгтийг аваарай. Дотоод нийлүүлэлт нь тээврийн хэрэгсэл, жолооч хоёулаа нэг хотод байрлаж байна. Дотоод холбоос нь байрлал багануудын хоорондын тааралдсан хүснэгтүүдийн бүх мөрүүдийг сонгоно.

Доорх SQL statement нь жолооч, тээврийн хэрэгсэл нэг хотод байрладаг тохиолдолд Жолооч ба тээврийн хэрэгслийн хүснэгтүүдийг нэгтгэнэ.

Сүүлд нэр, SELECT нэрийг сонгоод FROM жолоочид, тээврийн хэрэгслийг жолоочдоорой.location = vehicles.location

Энэ хүсэлт нь дараах үр дүнд хүргэдэг:

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

Одоо 3 дахь хүснэгтэд энэ жишээг оруулаарай. Та амралтын өдрүүдэд нээлттэй байгаа байршилд байгаа жолооч, тээврийн хэрэгслийг зөвхөн багтаахыг хүсч байна гэж төсөөлөөд үз дээ. Та JOIN мэдэгдлийг дараах байдлаар өргөтгөж гурав дахь хүснэгтэд таны асуултанд оруулах боломжтой:

Lastname, firstname, tag, open_weekends FROM drivers, vehicles, locations where WHERE drivers.location = vehicles.location AND vehicles.location = locations.location AND locations.open_weekends = 'Тийм' lastname firstname tag open_weekends -------- --------- --- ------------- Baker Roland H122JM yes Jacobs Абрахам J291QR yes Jacobs Абрахам L990MT тийм

Үндсэн SQL JOIN мэдэгдэлтэй энэ хүчирхэг өргөтгөлийг цогцоор нь нэгтгэх боломжтой. Дотоод нийлүүлэлтээр хүснэгтүүдийг хослуулахын зэрэгцээ та энэ аргыг олон хүснэгтийг гадна холболтыг ашиглан ашиглаж болно. Гадаад холбоосууд нэг хүснэгтэнд байгаа үр дүнг багтаасан боловч нэгдсэн хүснэгтэнд харгалзах тэмцээн байхгүй байна.