我正在開發一個小應用程序來管理人員及其關係。人與人之間的互惠關係
我創建了一個關於像婚姻和兄弟姐妹一樣的「關卡」關係的模型。爲了代表父母和孩子,我使用自引用字段。
這背後的想法是,有個人之間的互惠關係不違反任何NF的,並避免重複。
我的問題是,查詢獲取所有與個人相關的人都很複雜,因爲使用正常的連接,相應的人員也會在結果集中。
有沒有方法可以查詢所有與人員A相關的人員,而無需在結果集中存在人員A?
有更好的方式來表示相互關係嗎?
我正在開發一個小應用程序來管理人員及其關係。人與人之間的互惠關係
我創建了一個關於像婚姻和兄弟姐妹一樣的「關卡」關係的模型。爲了代表父母和孩子,我使用自引用字段。
這背後的想法是,有個人之間的互惠關係不違反任何NF的,並避免重複。
我的問題是,查詢獲取所有與個人相關的人都很複雜,因爲使用正常的連接,相應的人員也會在結果集中。
有沒有方法可以查詢所有與人員A相關的人員,而無需在結果集中存在人員A?
有更好的方式來表示相互關係嗎?
只需使用where
子句從結果集中篩選出人員A.自加入persons_relationships表本身,在一個實例濾波人A(x的ID),並從另一個排除同一個人:
select
pr2.person_id
from
persons_relationships pr1
inner join
persons_relationships pr2 on pr1.relationship_id=pr2.relationship_id
where
pr1.person_id=x and pr2.person_id<>x;
只是一個提示。只是放棄愚蠢的圖像幾乎沒有幫助。我們需要'show create table xyz'的輸出,其中xyz是相關的表格。然後一些示例數據和一些預期結果。人們在僞造數據的專欄中這樣做。令人敬畏的人用SQLFiddle做這件事,並分享這個網址,這樣我們就不必爲了你而浪費我們所有的時間。當你不這樣做的時候,我們逃跑並沒有幫助。所以,這是對於爲什麼在一半時間內沒有解決的問題你可以考慮的建設性批評。 – Drew
@德魯當我寫這個問題時沒有想過這個工具。我爲問題和答案都添加了一個SQL小提琴。感謝您的建設性反饋。 – berkyl
我很抱歉聽起來像個混蛋。只是希望人們得到他們的答案。 :p – Drew