ห่วงโซ่ของตารางที่เชื่อมโยงกัน
สมมติว่าตอนนี้ผู้ใช้ (users) อาศัยอยู่ในเมืองที่กำหนด และเมืองเหล่านี้ตั้งอยู่ในประเทศที่ต่างกัน ในกรณีเช่นนี้ การจัดเก็บข้อมูลจะต้องใช้ ตารางสามตาราง: ผู้ใช้จะเชื่อมโยงกับเมือง และเมืองจะเชื่อมโยงกับประเทศ ในขณะที่เราไม่จำเป็น ต้องใช้ฟิลด์เชื่อมโยงระหว่างผู้ใช้กับประเทศ เพราะ ผู้ใช้จะเชื่อมโยงกับประเทศผ่าน การเชื่อมโยงระหว่างเมืองและประเทศอยู่แล้ว
มาดูตารางของเรากัน ตาราง ประเทศ:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
ตารางเมือง:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
ตารางผู้ใช้จะยังคงเหมือนเดิม:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
คำสั่งค้นหา
เพื่อดึงข้อมูลผู้ใช้พร้อมกับ เมืองและประเทศของพวกเขา เราจะต้องทำ การ JOIN สองครั้ง: ครั้งแรกจะเชื่อมเมืองกับผู้ใช้ และครั้งที่สองจะเชื่อมประเทศกับเมือง:
SELECT
users.name,
cities.name as city_name,
countries.name as country_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
LEFT JOIN countries ON countries.id=cities.country_id
งานฝึกปฏิบัติ
สมมติว่าสินค้า (products) อยู่ในหมวดหมู่ย่อย (subcategory) ที่กำหนด และหมวดหมู่ย่อยอยู่ในหมวดหมู่ (category) ที่กำหนด อธิบายโครงสร้างการจัดเก็บข้อมูล
เขียนคำสั่งค้นหาเพื่อดึงสินค้า พร้อมกับหมวดหมู่ย่อยและหมวดหมู่ของสินค้าเหล่านั้น
เขียนคำสั่งค้นหาเพื่อดึงหมวดหมู่ย่อย พร้อมกับหมวดหมู่ของหมวดหมู่ย่อยเหล่านั้น