我們正在使用嵌套集模型的混合來允許一個孩子擁有多個父母。它是Mike Hillyers博客中描述的嵌套集模型的擴展:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ - 這可能有助於解釋一些列名。在另一個查詢中使用一個查詢的結果
我對SQL相當新,但我調查了連接,子查詢等,似乎沒有任何東西可以提供我需要的結果。我希望答案相當簡單,但幾乎肯定會是一個LEFT JOIN
,但我不能把它放在手上。
我有一個簡單的表,名爲'nested_parts'有5列:'tree_id','part_id','lft','rgt'和'映射'。
以下查詢返回我想要在第二個查詢中進行比較的值。
SELECT * FROM nested_parts WHERE part_id = 125
具體來說,我現在知道哪個tree_id的部件#125存在於每個tree_id的lft和rgt值中。
我現在需要知道所有part_id,它們是我之前拉出的tree_id結果數組。
我用這個這個子查詢:
SELECT * FROM nested_parts
WHERE tree_id = ANY (SELECT tree_id AS tbl FROM nested_parts WHERE part_id = 125)
現在我需要知道哪些PART_ID的有不都是tree_id範圍內的一部分#125 LFT和RGT值之間LFT和RGT值。如果我有兩個表格可以比較,或者可以使用虛擬表格,這很容易,但是在沒有循環的情況下這似乎不可行。
任何幫助感激地收到,但請明白,我是愚蠢的不懶惰,雖然我已經讀了很多關於工會,聯接,HAVING,WHERE,SELECT(SELECT),與頂部的數據的複雜性,我發現這非常混亂。
親切的問候,
詹姆斯
嗨詹姆斯,你可以設置sqlfiddle @:http://sqlfiddle.com/ – 2012-07-31 14:14:10
這是一個很好的問題儘管在那裏結尾有點混亂。 – Matt 2012-07-31 14:19:35
我刪除了PHP標籤,因爲雖然你正在PHP中實現它,但它本質上是一個mysql問題。 – Matt 2012-07-31 14:59:15