我接管了管理我工作的公司的内部网站,并且我需要从mysql数据库中获取数据。我遇到的问题是数据在6个不同的表中,全部使用相同的字段,但行都是唯一的(行在一个表中开始,然后在处理完成后被完全移动到不同的表中)雇员)。查看哪张表的结果是
有没有简单的方法来查询所有6一次?能够检索它来自的表的标题也是有用的。
我正在使用PHP来运行查询并显示它。创建另一个表来定义所有行的位置,有一个唯一的id,然后是另一个表所在的表?
我接管了管理我工作的公司的内部网站,并且我需要从mysql数据库中获取数据。我遇到的问题是数据在6个不同的表中,全部使用相同的字段,但行都是唯一的(行在一个表中开始,然后在处理完成后被完全移动到不同的表中)雇员)。查看哪张表的结果是
有没有简单的方法来查询所有6一次?能够检索它来自的表的标题也是有用的。
我正在使用PHP来运行查询并显示它。创建另一个表来定义所有行的位置,有一个唯一的id,然后是另一个表所在的表?
要完成此查询,使用union all
:
select
'Table1' as TableName,
*
from
Table1
union all
select
'Table2',
*
from
Table2
union all
select
'Table3',
*
from
Table3
...等等
为了更好的数据库设计,你想要么有一个表所有在它的行,以及一个指定的状态表,在这里您可以将StatusID列链接到指定给定行所处状态的状态列表。流程中每个阶段的表格设计不佳,并且只会导致严重的头痛。
如果你不能重新组织表格,以便你只有一个包含所有行和标记的过程中的标记,我会去做一个UNION
-approach。即:
SELECT 'Data from Table 1', t1.field1, ...
FROM Table1 t1
UNION
SELECT 'Data from Table 2', t2.field1, ...
FROM Table2 t2
UNION
(Table3, 4, 5 and 6 in the same manner)
....
这样你就可以看到数据源自哪里,并且一次获得全部6个数据。请记住,您必须在UNION
的所有部分都有完全相同的字段列表。
您可以创建一个代码生成器来生成SQL语句来查询6个表。生成器将创建6个选择的UNION,并为每个选择添加一个“表”列,其中的常量值等于查询的表的名称。这会使得编写语句变得容易,但我不会说编写生成器会是。 “
”创建另一个表来定义所有行的位置,有一个唯一的ID,然后是另一个表所在的位置?是的,这是一种经典的设计模式。 – Interrobang 2011-12-28 21:22:14
在那里。祝你好运,你需要它。 – 2011-12-28 21:22:28