如何从数据库中选择组织此报告的数据

时间:2012-07-13 23:04:14

标签: mysql database

我有一个表,其中每个记录是:ID,groupID和notes字段。 ID不是唯一的,它可以与多个groupID关联。并且每个ID-groupID组合可以与多个注释相关联。 我正在尝试打印的主要数据是注释字段。

id             | groupID    | notes
------------------------------------------------------------------
JWOFJ903JCKDF8 | groupID-22 | new id, new id-groupID combo
JWOFJ903JCKDF8 | groupID-33 | repeat id (line 1), new id-groupID combo
JWOFJ903JCKDF8 | groupID-33 | repeat id (lines 1&2), repeat id-groupID (line 2)
...
DF8#CKJ90JJ3WO | groupID-22 | new id, new id-groupID combo
DF8#CKJ90JJ3WO | groupID-44 | repeat id (line 4), new id-groupID combo
...

打印数据时,如何选择笔记以便将属于同一ID-groupID组合的所有笔记组合在一起?并且所有属于同一ID的groupID都组合在一起?

所以我的报告看起来像这样:

JWOFJ903JCKDF8
   -groupID-22
      - [line 1 of the data] new id, new id-groupID combo
   -groupID-33
      - [line 2 of the data] repeat id (line 1), new id-groupID combo
      - [line 3 of the data] repeat id (lines 1&2), repeat id-groupID (line 2)
DF8#CKJ90JJ3WO
   -groupID-22
      - [line 4 of the data] new id, new id-groupID combo
   -groupID-44
      - [line 5 of the data] repeat id (line 4), new id-groupID combo

我应该指出,这张表非常大 - 超过200,000条记录并且还在增长。

1 个答案:

答案 0 :(得分:1)

非常简单:

1 /选择所需的记录(按id和groupId排序)

SELECT id,groupID,notes
  FROM <your table name>
 WHERE ...
 ORDER BY id, groupID
 LIMIT ...

2 /使用WHERE限制结果以检索简单id和/或LIMIT的结果(我怀疑你想在单个报告中显示那些200k记录)。阅读SELECT命令的

的Mysql文档 在你的前端 3 /,每次更改id或groupID时使用变量来计算结果和缩进

如果我建议,您的数据库模型应该像这样更改:

  • 列ID应该是唯一的,就像自动增量键
  • 一样
  • 新列(让我们称之为键)应存储当前ID
  • 如果列groupId引用现有表组,则以相同方式更改此表:
    • 一个唯一的自动增量ID列,名称
    • 并在记录表中,仅存储组表ID作为列名建议