我有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>
…
Lemme从书籍推荐开始:SQL Antipatterns。你需要它,无论你是造成这个烂摊子还是刚刚分配修复它都没关系。
如果我在你的位置,首先要做的是修复数据库结构。这太疯狂了。您不需要每年的新表和每个公司的新列。数据库不是Excel电子表格的一种形式。
Invoices Years Companies
----------------- ------------- ---------------
| product_code PK | | year_id PK | | company_id PK |
| company_id FK | | number | | title |
| amount | ------------- ---------------
| year_id FK |
-----------------
其中PK - 主键和FK - 外键。
这种结构将使信息的收集变得更加容易。
如果您只想显示数据而不担心重组,您可以使用JOIN
显示所有表中的信息。
虽然我同意teresko你真的需要重新设计该数据库。它不可维护。