0
我一直在構建PHP網頁很長一段時間了,但我對MySQL數據庫並不熟悉。我已經徹底地尋找了像我這樣的問題的解決方案,但沒有任何運氣(儘管有類似的問題回答,我無法弄清楚如何實施提供的解決方案)。mysql分層遞歸查詢
我有一個3級分層結構5頁的表如下:
Clients (id, name, ...)
↳ Projects (id, client_id, name, ...)
↳ Contacts (id, project_id, name, ...)
↳ Files (id, project_id, name, ...)
↳ Events (id, project_id, name, ...)
我試圖實現與一捻遞歸查詢:如果我提供任何級別的ID(與指定電平該ID屬於),它應該以樹狀結構返回該級別的父級和子級記錄。
例如:我有一個項目ID,所以我想要返回該項目所屬的客戶端(父)以及項目的聯繫人,文件和事件(子項)。或者如果我有一個事件的ID,那麼我想輸出項目(父),客戶(父母),以及聯繫人和文件(與事件處於同一級別)。
重點是查看選定項目的完整歷史記錄。這甚至有可能與一個查詢...?任何建議,歡迎和讚賞!
感謝您的快速回復和示例!看起來我是在同一條路徑上:我試過了LEFT JOIN(沒有UNION,因爲這些表有不同的列數),但是不知道如何過濾返回的數據集。你如何區分不同的層次來構建一個樹形結構?還有,你能指出我設計的弱點嗎('巨大的冗餘')? – laciii
作爲冗餘的一個例子,如果一個聯繫人與多個項目相關聯,該怎麼辦?據我所知,這裏沒有「關卡」,但請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to -ME將要-A-極簡單的SQL查詢 – Strawberry