2011-07-02 29 views
1

基本上我有一個家譜表,其中每個人都有一個child_id爲自己和parent_id(這兩個都是我的表中的字段)。我的目標是爲我的投票字段添加+ 1到家譜中的每個家長。PHP QUERY循環?

所以,我需要從行中選擇parent_id並更新投票。然後,我需要從該行中選擇父母並更新父母的投票。然後,我需要從THAT行中選擇父母,並且做同樣的事情......一直到我到達第一個祖先爲止,並且沒有更多的父母或孩子需要更新。這裏是我的選擇和更新查詢:

SELECT parent_id FROM profiles where child_id = $first_ancestor 
UPDATE profiles SET votes = votes + 1 where child_id = parent_id 

我使用循環?或者我該怎麼做?謝謝!

+1

對於處理數據樹,你可能想看看存儲在一個數據嵌套集合。這使得這樣的事情變得更容易。 – deceze

+0

@deceze取決於他的更新頻率 –

回答

1

我會使用一個循環。據我所知,這是關係數據庫的限制。儘管如此,一些DBMS比遞歸查詢有更好的遞歸查詢支持。

如果你爲它而戰,你可能想看看一些叫做graph databases的東西。其中一些比大多數關係數據庫對這些操作有更好的支持。

退房: