【发布时间】:2015-07-02 15:08:18
【问题描述】:
我正在尝试创建一个对分层数据进行分组的 MySQL 查询。这是一个数据库的例子
table name: location
locationID INT UNSIGNED NOT NULL AUTO_INCREMENT,
parentID INT UNSIGNED NOT NULL,
name CHAR(255)
这是一些示例数据
locationID parentID name
1 | 0 | United States
2 | 1 | Massachusetts
3 | 2 | Boston
4 | 2 | Worcester
5 | 1 | New York
6 | 5 | Brooklyn
7 | 1 | Colorado
8 | 7 | Denver
9 | 0 | Canada
10 | 9 | Ontario
11 | 10 | Toronto
12 | 9 | Quebec
13 | 12 | Quebec City
以上名称只是用于了解我希望如何处理查询的示例。 我希望以特定的方式显示上表数据。 我希望按名称升序(国家)对 parentID = 0 的行进行排序,并在每个行下列出 parentID 与 locationID 匹配的行(州/省),并在每一行下列出 parentID 与 locationID 匹配的行(城市)。
这是我迄今为止尝试过的,但无济于事。
SELECT locationID,parentID,name FROM location ORDER BY parentID ASC name ASC
还有
SELECT locationID,parentID,name FROM location GROUP BY 'parentID' ORDER BY name ASC
我希望能够添加行并选择父级并生成一个列表,其中父级在顶部,然后是子级,然后是每个子级下面的子级,等等。我正在使用 MySQL 和 PHP 进行编程
任何有关解决此问题的建议都将非常有帮助和赞赏,在此先感谢。
【问题讨论】:
-
使用别名自行加入事物。并不是说这可能完全清楚;)
-
你希望这完全在 mysql 中完成?还是 PHP 和 mysql?
-
最好在 MySQL 中,但如果 PHP 是必要的/更安全或更快,那么我猜两者都是。
-
所以我成功地设计了一个我想要的 PHP 版本,但是它在 WHILE 循环中使用了许多查询。效率不是很高,也不是我想要的那么快
标签: php mysql sql-order-by hierarchical-data