การเชื่อมโยงตารางแบบต่อเนื่องใน Python
สมมติว่าผู้ใช้อยู่ในเมืองต่างๆ และเมืองเหล่านี้ตั้งอยู่ในประเทศที่แตกต่างกัน ในกรณีนี้ การจัดเก็บข้อมูลจะต้องการตารางสามตาราง: ผู้ใช้จะถูกเชื่อมโยงกับเมือง และเมืองจะถูกเชื่อมโยงกับประเทศ โดยที่เราไม่จำเป็นต้องมีฟิลด์สำหรับเชื่อมโยงผู้ใช้กับประเทศโดยตรง เนื่องจากผู้ใช้จะถูกเชื่อมโยงกับประเทศผ่านการเชื่อมโยงระหว่างเมืองและประเทศอยู่แล้ว
มาดูตารางของเรากัน ตารางประเทศ:
| 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
โจทย์ฝึกปฏิบัติ
สมมติว่าสินค้าอยู่ในหมวดหมู่ย่อยที่เฉพาะเจาะจง และหมวดหมู่ย่อยนั้นๆ อยู่ในหมวดหมู่หลักที่เฉพาะเจาะจง อธิบายโครงสร้างการจัดเก็บข้อมูล
เขียนคำสั่งค้นหาเพื่อดึงข้อมูลสินค้าพร้อมกับหมวดหมู่ย่อยและหมวดหมู่หลักของสินค้าเหล่านั้น
เขียนคำสั่งค้นหาเพื่อดึงข้อมูลหมวดหมู่ย่อยพร้อมกับหมวดหมู่หลักของหมวดหมู่ย่อยเหล่านั้น