我有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>
…
答案 0 :(得分:4)
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 - 外键。
这种结构将使收集信息变得更加容易。
答案 1 :(得分:0)
如果您只是想显示数据而不担心重组,您可以使用JOIN
显示所有表格中的信息。
虽然我同意teresko你真的需要重新设计该数据库。它不可维护。