无法从具有相同名称的 2 个不同表中同时选择 2 个字段

问题描述 投票:0回答:1
$query = 'SELECT * 
          FROM #__virtuemart_products AS a 
          LEFT JOIN #__virtuemart_products_en_gb as b ON a.virtuemart_product_id = b.virtuemart_product_id
          INNER JOIN #__virtuemart_product_categories as c ON a.virtuemart_product_id=c.virtuemart_product_id
          INNER JOIN #__virtuemart_categories_en_gb as d ON c.virtuemart_category_id = d.virtuemart_category_id 
          WHERE b.slug LIKE "'.$current.'%" 
            AND a.product_parent_id = 0
            AND d.category_name="'.$query_title.'"' ;

$db->setQuery($query);
$options=$db->loadObjectList();

这是我用来解析数据库中的一些产品的查询。

问题是:

virtuemart_products_en_gb
有一个名为
slug
的列,表
virtuemart_categories_en_gb
也有一个名为
slug
的列。

当我使用

$row->slug
时,它解析了
virtuemart_categories_en_gb.slug
列。

因此,在我

var_dumped
ObjectList之后,我看到只有1列名为
slug
。在 phpmyadmin 中使用相同的查询后,它返回 2 个名为
slug
的列。

我想我可以解决这个问题:选择每个单独的记录并将第一个片段设置为

slug1
,将第二个片段设置为
slug2

例如:

SELECT 
    id, username, password, 
    b.slug as slug1, c.slug as slug2

等等。还有更好的办法吗?因为我需要解析很多列,这会使查询变得非常庞大。

为什么 php 查询仅返回 1 个名为 slug 的字段,而 phpmyadmin 则返回两个字段?

提前致谢。

php mysql
1个回答
1
投票

您可以在选择同名列后指定

*
。例如,

SELECT *, b.slug as slug1,c.slug as slug2
FROM #__virtuemart_products as a 
LEFT JOIN #__virtuemart_products_en_gb as b ON a.virtuemart_product_id = b.virtuemart_product_id
INNER JOIN #__virtuemart_product_categories as c ON a.virtuemart_product_id=c.virtuemart_product_id
INNER JOIN #__virtuemart_categories_en_gb as d ON c.virtuemart_category_id = d.virtuemart_category_id 
WHERE b.slug LIKE "'.$current.'%" AND a.product_parent_id = 0
AND d.category_name="'.$query_title.'"
© www.soinside.com 2019 - 2024. All rights reserved.