⊗ppPmDOFR 385 of 447 menu

Mối quan hệ dữ liệu cha con trong PHP

Giả sử chúng ta có nhiệm vụ lưu trữ thông tin về các người cha và con trai. Giả định mỗi người cha chỉ có thể có một con trai, và người con trai đó cũng chỉ có thể có một con trai.

Chúng ta cần nghĩ cách lưu trữ dữ liệu. Ý tưởng đầu tiên có thể nảy ra là tạo hai bảng: parents cho các người cha và sons cho các con trai. Sau đó liên kết các bảng này bằng một trường nào đó: son_id hoặc parent_id.

Tuy nhiên, đây không phải là ý tưởng hay - bởi vì một người có thể đồng thời vừa là cha vừa là con - và sẽ phải lưu trữ thông tin của người đó trong cả hai bảng, điều này gây bất tiện, tốn nhiều dung lượng hơn và dễ dẫn đến lỗi.

Một phương án tốt hơn là liên kết bảng với chính nó: tạo bảng users, trong đó lưu trữ tất cả người dùng và tạo cho mỗi người một trường son_id, trong đó lưu trữ id của người con trai từ chính bảng đó:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

Các truy vấn

Bây giờ hãy viết một truy vấn để lấy thông tin người dùng cùng với con trai của họ.

Đầu tiên, hãy lấy thông tin người dùng:

SELECT * FROM users

Bây giờ hãy thực hiện JOIN với các con trai của họ. Chúng ta sẽ JOIN bảng với chính nó, vì vậy cần thực hiện đổi tên bảng:

LEFT JOIN users as sons

Bây giờ chúng ta có thể chỉ định mối quan hệ giữa bảng chính và bảng đã đổi tên:

LEFT JOIN users as sons ON sons.id=users.son_id

Bây giờ hãy chỉ định các trường:

SELECT users.name as user_name, sons.name as son_name

Tổng hợp tất cả lại, chúng ta có truy vấn sau:

SELECT users.name as user_name, sons.name as son_name FROM users LEFT JOIN users as sons ON sons.id=users.son_id

Bài tập thực hành

Giả sử chúng ta có các danh mục. Mỗi danh mục có thể thuộc về một danh mục cha, danh mục cha đó lại thuộc về danh mục cha của nó và cứ tiếp tục như vậy. Hãy mô tả cấu trúc lưu trữ.

Viết truy vấn lấy thông tin một danh mục cùng với danh mục cha của nó.

Viết truy vấn lấy thông tin một danh mục cùng với cha và ông của nó (danh mục cấp trên hai bậc).

Viết truy vấn lấy thông tin một danh mục cùng với cha, ông và cụ của nó (danh mục cấp trên ba bậc).

Tiếng Việt
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ʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối