我正在研究一個有趣的項目,我必須承認SQL不是我的強項。簡而言之,我的問題是這樣的:T-SQL-困難的邏輯查詢
假設一個表擁有共享特定關係的用戶對。 (例如(約翰,瑪麗,朋友),(瑪麗,愛麗絲,朋友)) 有沒有一種方法可以編寫一個查詢,以產生約翰的朋友的朋友,在這種情況下,愛麗絲,但也沒有返回瑪麗作爲結果?而且這樣的查詢可以擴展到任意n長度,因此排除中間用戶之後總會產生一組對。
同樣的: 一個會產生的查詢 - John與Alice有多少共同點? (在這種情況下,1)
或者 - 如果關係以同一人開始和結束(例如,約翰,瑪麗,愛麗絲,約翰 - 友誼),則有多少朋友屬於同一類型的關係。
如果帖子聽起來很愚蠢,我很抱歉 - 我知道我以前從來不必擔心SQL級別的這類事情,SQL主要用於插入,更新和檢索報表形式的數據。 動態查詢創建不是問題 - 我對查詢的體系結構邏輯更感興趣。 這是不同的,我不知道是否有辦法在SQL中,或者如果我應該嘗試在我的代碼的業務級別(例如使用.NET)做它
非常感謝。
查找分層查詢。取決於RDBMS和版本,語法和功能會有所不同。在某些情況下,使用聯合和公用表表達式可以解決此問題,而在其他情況下,您無法在RDBMS中輕鬆完成必要的功能。 – xQbert
我不得不承認我不確定你在問什麼......有很多問題隱藏在那裏。你應該在數據庫中做BL嗎?不可以。您是否應該使用它來獲得X的朋友,或者找到這些人之間的共同朋友?是。你會如何編寫這些查詢?這取決於你的模式和數據庫系統! – Liath
對不起_我知道這可能會令人困惑。用簡單的英語思考它(它幫助我!)。我是喬治,愛麗絲是我的朋友。瑪麗是愛麗絲的朋友,但不是我的朋友。金是瑪麗的朋友,也是別人的朋友。如果我想找個朋友,朋友,朋友(在這種情況下是金)的人,我的第一個想法是動態查詢和多個連接。但是 - 這不會阻止連接加入前一對以及前一對。我怎麼能達到以下結果:George,Kim和其他什麼? –