⊗ppPmDOGD 382 of 447 menu

การรับข้อมูลจากตารางที่เชื่อมโยงกันใน PHP

ลองมาสร้างคำสั่งค้นหาที่จะดึงข้อมูล ผู้ใช้ทั้งหมดพร้อมกับเมืองของพวกเขากัน สำหรับการนี้ เราจะต้องใช้คำสั่ง LEFT JOIN:

ไวยากรณ์ของมันมีลักษณะดังนี้:

SELECT ฟิลด์ FROM ชื่อ_ตาราง LEFT JOIN ชื่อ_ตารางที่เชื่อมโยง ON เงื่อนไขการเชื่อมโยง WHERE เงื่อนไขการเลือก

ลองมาแยกส่วนต่าง ๆ ของไวยากรณ์ คำสั่งนี้ดู

ฟิลด์

เนื่องจากเป็นการเลือกข้อมูลจากหลายตาราง การเลือกฟิลด์ทั้งหมดผ่าน * จะไม่ ทำงาน คำสั่งค้นหาต่อไปนี้จะเลือกฟิลด์เฉพาะ จากตารางหลัก แต่ไม่ใช่จากตารางที่เชื่อมโยง:

SELECT *

เพื่อให้ข้อมูลถูกเลือกจากทั้งหมด ตาราง จำเป็นต้องระบุชื่อ ตารางสำหรับการเลือกก่อน *:

SELECT users.*, cities.*

หรือสามารถระบุฟิลด์ที่เราต้องการพร้อมกับ ระบุชื่อตารางก่อนหน้าฟิลด์เหล่านั้นได้:

SELECT users.name, cities.name

สองวิธีนี้มีปัญหาอยู่ ประเด็นคือ หากฟิลด์ในตารางต่าง ๆ มีชื่อ เหมือนกัน ในอาร์เรย์ PHP จะเกิดความขัดแย้งของ ชื่อและจะมีเพียงฟิลด์เดียวที่ชนะ ส่วนฟิลด์ที่สองจะหายไป

ในการแก้ปัญหา จำเป็นต้องเปลี่ยนชื่อ ที่ขัดแย้งกันผ่านคำสั่ง as:

SELECT users.name, cities.name as city_name

การเชื่อมโยง

หลังจากคำสั่ง ON เราต้องระบุ ฟิลด์จากสองตาราง ซึ่งการเชื่อมโยง ดำเนินการผ่านฟิลด์เหล่านั้น ในกรณีของเราคือฟิลด์ id จากตารางเมืองและฟิลด์ city_id จากตารางผู้ใช้:

ON cities.id=users.city_id

คำสั่งค้นหา

ในที่สุด คำสั่งค้นหาที่จะดึงข้อมูลผู้ใช้พร้อม กับเมืองของพวกเขาจะมีลักษณะดังนี้:

SELECT users.name, cities.name as city_name FROM users LEFT JOIN cities ON cities.id=users.city_id

งานปฏิบัติ

สมมติว่าคุณมีตารางสินค้าและตาราง หมวดหมู่ของพวกเขา เขียนคำสั่งค้นหาที่ จะดึงชื่อสินค้าพร้อมกับหมวดหมู่ของพวกเขา

ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ