嘗試過幾種可能性我已經停下來了。如果不超載數百查詢的MySQL服務器,這就是我想實現:在單個表上的MySQL複雜查詢問題
下面是表
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`firstname` varchar(64) NOT NULL,
`lastname` varchar(64) NOT NULL,
`email` varchar(64) NOT NULL,
`status` smallint(5) NOT NULL,
`refchid1` int(11) NOT NULL,
`refchid2` int(11) NOT NULL,
`refchid3` int(11) NOT NULL,
`refchid4` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
說明:
- 我試圖調整一個人的地位基於一棵複雜的樹。每個用戶都有一個id,如auto_increment id字段所示。
- 用戶A將他的詳細信息輸入到表格中。
- 用戶B由用戶A refered,所以,當他的細節被輸入refchid1具有相同的ID作爲用戶A.
- 用戶C是由用戶B refered,他refchid1變成用戶B的ID和他的refchid2成爲用戶A的ID
- 用戶d由用戶C refered,他refchid1成爲用戶C的是,refchid2該用戶B和refchid3用戶A.
,如果你理解了上面的引用,你在正確的軌道上。
上述說明的樣本數據:
(6, 'Lars', 'Luna', '[email protected]', 25, 0, 0, 0, 0),
(7, 'Sonya', 'Cox', '[email protected]', 25, 6, 0, 0, 0),
(8, 'Aiko', 'Hodge', '[email protected]', 25, 7, 6, 0, 0),
(9, 'Lillith', 'Bray', '[email protected]', 25, 8, 7, 6, 0),
(10, 'Macey', 'Hayes', '[email protected]', 25, 9, 8, 7, 6);
我試圖做到的是:
- 默認狀態是25(25,28,30,35,40)查看這基本上就是一種折扣系統,在這種系統中,您提及的人越多,他們引用的人越多,您在哪裏可以獲得更大的折扣。
- 如果用戶A至少有10個唯一用戶,他引用爲refchid1,他獲得狀態。
- 如果用戶A在refchid1中至少有10個uniuque用戶,而每個用戶在refchid1中有10個唯一用戶,其中用戶A是refchid2,則他獲得狀態。
- 用戶A在rechid1中有10個唯一用戶,每個用戶在refchid1中有10個唯一用戶,其中用戶A是rechid2,而用戶A在refchid3的refchid1中又有10個唯一用戶。
- 等
如前所述,測試的結構複雜,我想這樣做沒有數以百萬計的查詢超載MySQL服務器。查詢應該是一個UPDATE查詢,它將調整所有匹配用戶的狀態。
有沒有人有我如何完成這個解決方案?
所以這種思維爲一棵樹基本上就意味着每10個用戶在任何級別提到更高水平的所有用戶獲得1個狀態點? – nobody
這是一個正確的假設。 說明: 用戶A在refchid1上有10個引用,在refchid1上的這10個引用中,他們每個在refchid2上都有用戶A,他們在refchid1引用了10個用戶。 –