我已經制作了一個簡單的表來了解親子關係,但我似乎沒有得到正確的結果。我想按字母順序「名稱」字段中,只有那些誰沒有父母(PARENT_ID == 0) MYSQL:選擇父級按字母順序分組的按字母順序排序的兒童
- 第一排序呢父母也按姓名按字母順序排序。
實施例的表:
===================================== =======================
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
--
-- Dumping data for table `test`
--
INSERT INTO `test` (`id`, `parent_id`, `name`) VALUES
(1, 4, 'Zorg'),
(2, 0, 'Woordolack'),
(3, 4, 'Akriller'),
(4, 0, 'Metabrusher'),
(5, 2, 'Intersplitter'),
(6, 0, 'Beaverbrain'),
(7, 4, 'Torgeoruos'),
(8, 2, 'Deptezaurus');
==================== ========================================
這是我想要的使用PHP輸出到Web瀏覽器:
Beaverbrain
Metabrusher
-> Akriller
-> Torgeoruos
-> Zorg
Woordolack
-> Deptezaurus
-> Intersplitter
================================================ ============
我應該說這是一個示例表,只是爲了展示這個想法,所以可以通過任何方式修改它以獲得正確的結果。
哇,它以某種方式工作!這是學習MYSQL的非常酷的例子(雖然我很難理解)。但是,如果真正的表有幾千條記錄,並且還要連接其他表以獲得更多數據,它將如何影響性能? – TOL
性能明智我不確定,取決於索引,但直到您真正在實際數據上運行時纔會知道。要理解它,你可以嘗試選擇(突出顯示)內部的單個選擇並在sqlfiddle上運行它們,你會看到數據返回並且你會理解。一旦你掌握了它就很簡單。 –
我用一個不同的版本更新了我的答案,這個版本可能會更快一些,而且更容易理解。 –