我接手管理我正在为之工作的公司的内部网站,我需要从mysql数据库中获取数据。我遇到的问题是数据在6个不同的表中,所有表都具有相同的字段,但行都是唯一的(行在一个表中开始,然后在由一个表处理之后完全移动到另一个表中雇员)。
是否有一种简单的方法可以同时查询所有6个?能够检索它来自的表的标题也是有用的。
我正在使用PHP来运行查询并显示它。创建另一个表来定义所有行的位置,具有唯一的ID,然后是另一个表所在的表是否更好?
答案 0 :(得分:0)
要完成此查询,请使用union all
:
select
'Table1' as TableName,
*
from
Table1
union all
select
'Table2',
*
from
Table2
union all
select
'Table3',
*
from
Table3
......等等
为了更好的数据库设计,您可能希望有一个表 all 中的行,以及一个指定的Status表,您可以在其中链接StatusID列,表示给定行的状态进程中的每个阶段的表都是一个糟糕的设计,只会导致大量的头痛。
答案 1 :(得分:0)
如果您无法重新组织表格,以便您只有一个包含所有行的表格,并且标记了它们在过程中的位置,那么我会采用UNION
方法。即:
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)
....
通过这种方式,您可以看到数据源自何处,并且您可以同时获得所有数据。请记住,您必须在UNION
的所有部分中使用完全相同的字段列表。
答案 2 :(得分:0)
您可以创建一个代码生成器,生成SQL语句来查询6个表。生成器将创建一个6个选择的UNION,并为每个选择添加一个“表”列,其常量值等于查询表的名称。这会使编写语句变得容易,但我不会说编写生成器会是。