查看结果所在的表格

时间:2011-12-28 21:21:10

标签: php mysql

我接手管理我正在为之工作的公司的内部网站,我需要从mysql数据库中获取数据。我遇到的问题是数据在6个不同的表中,所有表都具有相同的字段,但行都是唯一的(行在一个表中开始,然后在由一个表处理之后完全移动到另一个表中雇员)。

是否有一种简单的方法可以同时查询所有6个?能够检索它来自的表的标题也是有用的。

我正在使用PHP来运行查询并显示它。创建另一个表来定义所有行的位置,具有唯一的ID,然后是另一个表所在的表是否更好?

3 个答案:

答案 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,并为每个选择添加一个“表”列,其常量值等于查询表的名称。这会使编写语句变得容易,但我不会说编写生成器会是。