1

我有 14 张桌子(每年一张),上面有产品代码、公司名称和发票号码。表的主要结构相同(产品代码,ID),但公司名称中可以有一些变量。

Table2011
| ID | productcode | firm1 | firm2 | firm3 | etc |
| 1  | G-00001     | 2;5;40| 32;67 |       | 150 |
| 2  | G-00005     |       | 50    |       |     |
|etc |             |       |       |       |     |

Table2010
| ID | productcode | firm1 | firm2 | firm3 |etc |
| 1  | G-00001     | 1;10  |       |  55   |    |
| 2  | G-00003     |       | 2     |       |    |
| 3  | G-00005     |       | 50    |  40   |    |
| etc|             |       |       |       |    |

Table2009
...

列 Firm1 通常不等于与其他表中的公司 1 相同的公司

我正在使用表格编辑器来处理表格(向表格添加列、编辑值……)。

我想知道是否有可能达到下面的结果。它高于我的 PHP 技能。

产品 G-00001 页

…
<UL>
<LI>Year 2011: 150etc; 67firm2; 40firm1; 32firm2; 5firm1; 2firm1</LI>
<LI>Year 2010: 55firm3; 10firm1; 1firm1</LI>
<LI>Year 2009: ...</LI>
...
</UL>
…
4

2 回答 2

4

让我从推荐书籍开始:SQL 反模式。你会需要它,不管是你造成了这个混乱还是被分配来修复它。

如果我在你的位置,首先要做的是修复数据库结构。这太疯狂了。您不需要为每一年创建一个新表,并为每个公司创建一个新列。数据库不是 Excel 电子表格的一种形式。

Invoices             Years          Companies
 -----------------      -------------     ---------------
| product_code PK |    | year_id  PK |   | company_id PK |
| company_id   FK |    | number      |   | title         |
| amount          |     -------------     ---------------
| year_id      FK |
 -----------------

其中 PK - 主键和 FK - 外键。

这种结构将使信息的收集变得容易得多。

于 2011-05-06T12:50:24.490 回答
0

如果您只想显示数据而不担心重组,您可以使用 aJOIN显示所有表中的信息。

尽管我同意 teresko 的观点,但您确实需要重新设计该数据库。它是不可维护的。

于 2011-05-06T12:53:46.933 回答