ห่วงโซ่ของตารางที่เชื่อมโยงกัน

สมมติว่าตอนนี้ผู้ใช้ (users) อาศัยอยู่ในเมืองที่กำหนด และเมืองเหล่านี้ตั้งอยู่ในประเทศที่ต่างกัน ในกรณีเช่นนี้ การจัดเก็บข้อมูลจะต้องใช้ ตารางสามตาราง: ผู้ใช้จะเชื่อมโยงกับเมือง และเมืองจะเชื่อมโยงกับประเทศ ในขณะที่เราไม่จำเป็น ต้องใช้ฟิลด์เชื่อมโยงระหว่างผู้ใช้กับประเทศ เพราะ ผู้ใช้จะเชื่อมโยงกับประเทศผ่าน การเชื่อมโยงระหว่างเมืองและประเทศอยู่แล้ว

มาดูตารางของเรากัน ตาราง ประเทศ:

countries
id name
1 country1
2 country2

ตารางเมือง:

cities
id name country_id
1 city1 1
2 city2 1
3 city3 2

ตารางผู้ใช้จะยังคงเหมือนเดิม:

users
id name city_id
1 user1 1
2 user2 1
3 user3 2
4 user4 1
5 user5 3
6 user6 2

คำสั่งค้นหา

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

sqlSELECT 
  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

งานฝึกปฏิบัติ

Задание 1

สมมติว่าสินค้า (products) อยู่ในหมวดหมู่ย่อย (subcategory) ที่กำหนด และหมวดหมู่ย่อยอยู่ในหมวดหมู่ (category) ที่กำหนด อธิบายโครงสร้างการจัดเก็บข้อมูล

Задание 2

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

Задание 3

เขียนคำสั่งค้นหาเพื่อดึงหมวดหมู่ย่อย พร้อมกับหมวดหมู่ของหมวดหมู่ย่อยเหล่านั้น