MySQL Query覆盖了数组中的元素

时间:2014-06-04 17:34:10

标签: mysql doctrine-orm

我的SQL-Query正在覆盖具有相同名称的元素。但名称来自不同的表并具有不同的名称,例如[文章] [姓名],[公司] [姓名]。

我有这些表格。

1。)Shop_Articles_Category_Allocation 2.)投资组合 3.)文章 4.)公司 5.)类别

示例:

Shop_Category_Articles_Allocation
   id      | portfolio_id  | article_id
   Primary   To Protfolio    Articles

Portfolio
id | company_id | ....
     To Company

Company
id | name | ...

Articles
id | name | ...

我的代码:

        $em = $this->getDoctrine()->getManager();
        $sql =  " 
            SELECT *
            FROM shop_cat_art_alloc scaa 
            INNER JOIN portfolio p ON scaa.article_id = p.article_id
            INNER JOIN companies c ON p.company_id = c.id
            INNER JOIN articles a ON scaa.article_id = a.id


            WHERE scaa.shop_cat_id IN ($cat_id )
            AND a.state_id = (:state_id)
            AND p.state_id = (:state_id)
            AND scaa.state_id = (:state_id)
            AND c.state_id = (:state_id)
        ";

        $stmt = $em->getConnection()->prepare($sql);
        $stmt->bindParam(':state_id', $state_id);
        $stmt->execute();
        $result_articles = $stmt->fetchAll(); 

现在我得到一个积极的结果,但在这种情况下,公司的名称将被覆盖在数组中。我得到一个像这样的数组:

[id] => 1 [article_id] => 1 [name] => Chucks //this is the article name but there is no company name anymore.

如何进行查询,我也可以访问公司名称,仍然可以查看文章名称?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用别名,替换通配符*并命名列并给出碰撞别名的列。

select user.name as username, account.name as accountname 
from table 

有关别名的更多信息: http://dev.mysql.com/doc/refman/4.1/en/identifiers.html