查询结果中的列过多

时间:2014-07-01 16:07:40

标签: php mysql sql

我正在尝试为使用MySQL和PHP的公司列表编写一个简单的界面。所以,我想从我的数据库中获取一些信息。

以下是我的表格:

  • companies_data - 仅供系统信息使用。
  • corporate_data - 这里我想保留有关大公司的信息。
  • individual_data - 在这里,我想保留有关小公司的信息。

所以,这是表格 http://i.imgur.com/Iy39mfe.png

这是我写的查询:

SELECT
    a.id,
    a.user_id,
    a.added,
    a.`status`,
    a.company_id,
    a.company_type,
    a.deposit,
    a.individual_operations_cache,
    a.corporate_operations_cache,
    a.physical_operations_cache,
    b.full_name,
    b.tax_number,
    b.address,
    b.statement_date,
    b.psrn,
    c.full_name,
    c.tax_number,
    c.address,
    c.statement_date,
    c.psrn
FROM
    companies_data a
    LEFT OUTER JOIN corporate_data b
        ON (a.company_id = b.id) AND a.company_type = 0 
    LEFT OUTER JOIN individual_data c
        ON (a.company_id = c.id) AND a.company_type = 1
WHERE
    a.user_id = 3

这只是测试的代码,我很快就会扩展它。

http://i.imgur.com/6ptdnsj.png

如您所见,我的结果包含%field_name%1,%another_field_name%1等额外字段。当然这不是mysql错误 - 我问过我有什么 - 但我想删除这些字段?有可能或者我必须在应用程序端转换此输出吗?

1 个答案:

答案 0 :(得分:1)

%field_name%1,%another_field_name%1,因为您在查询中选择它们,所以它们是可见的:             b.full_name,             b.tax_number,             b.address,             b.statement_date,             b.psrn,             c.full_name,             c.tax_number,             c.address,             c.statement_date,             c.psrn

当您在不同的表中使用具有相同名称的字段时,结果列名称带有此标识符field1,field2,fieldn ...,以便区分该字段来自哪个表。 如果要避免使用此名称,可以按如下方式使用别名:            [...]             b.full_name as corporate_full_name,            [...]

可能,如果每个公共字段都是重合的,则不需要全部显示,所以只需从选择中删除它们。

希望对你有用。 宽单峰