【发布时间】:2014-11-25 17:31:59
【问题描述】:
我有一个(简化的)表格,如下所示:
+----+--------------+-----------+----------------+----------------+--------+---------+
| ID | First name | Last name | Street Address | Postal Address | Country | Spouse |
+----+--------------+-----------+----------------+----------------+---------+--------+
| 1 | Nancy | Fuller | Street 1 | City 1 | USA | 4 |
| 2 | Andrew | Davolio | Way 2 | Town 2 | USA | 0 |
| 3 | Janet | Leverling | Blvd 3 | Village 3 | USA | 0 |
| 4 | Steven | Buchanan | Street 1 | City 1 | USA | 1 |
| 5 | Anne | Dodsworth | Street 1 | City 1 | USA | 0 |
+----+--------------+-----------+----------------+----------------+---------+--------+
如您所见,Nancy 和 Steven 已婚(配偶列包含配偶的 ID,如果有)并同居。南希的妹妹安妮也和他们住在一起(不便评论)。
现在我想打印这个数据库。我想按姓氏订购,但在打印页面上我有两个选择:
- 按地址分组
- 按配偶分组
所以有四种情况:
无分组
它们只是按姓氏排序:
布坎南,史蒂文
达沃里奥,安德鲁
多兹沃思,安妮
富勒,南希
莱弗林,珍妮特
按地址分组 当到达几个具有相同地址的第一个人时,所有这些都被打印(仍然按组中的姓氏排序):
布坎南,史蒂文
多兹沃思,安妮
富勒,南希
达沃里奥,安德鲁
莱弗林,珍妮特
按配偶分组 当到达一对夫妇中的第一个人时,都会打印两者:
布坎南,史蒂文
富勒,南希
多兹沃思,安妮
达沃里奥,安德鲁
莱弗林,珍妮特
按地址分组和配偶 结合以上,配偶优先(所以南希出现在安妮之前,因为她是史蒂夫的配偶)。
布坎南,史蒂文
富勒,南希
多兹沃思,安妮
达沃里奥,安德鲁
莱弗林,珍妮特
如果可能的话,我真的希望它们分组,而不仅仅是一个接一个地排序。如上所示,我想要未分组的人之间的空间,并且分组的人之间没有空间。 这可能只使用 MySQL,还是我也必须使用 PHP?
(我使用的是 PHP 5.5.16 和 MySQL 5.5.39,PDO 对象)
【问题讨论】:
-
所以你想通过它们被分组来排序,并且在它们没有被分组时返回一个空行?空间有什么好处,你为什么要那样(似乎是一个毫无意义的要求)
-
对不起,我有点不清楚。我想要打印纸上的空间,而不是 db-result。
-
那为什么还要问你是否可以在 MySQL 中完成这一切呢? MySQL 将用于获取数据库结果。如果您想以不同的方式打印出来,请在应用层执行此操作
-
是的,但是应用层应该如何知道哪些是分组的呢?他们只是出现在一个长长的列表中。我不知何故需要知道哪些分组来添加空格。
-
到目前为止您有什么疑问?你想要什么顺序?
标签: mysql