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


cant select both 2 fields from 2 different tables with the same name

$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有一个名叫鼻涕虫的列表:virtuemart_categories_en_gb还有一个名叫鼻涕虫的列

当我使用 $row->slug 时,它解析了virtuemart_categories_en_gb slug。

因此,在我var_dumped对象列表后,我看到只有 1 个名为 slug 的列。在 phpmyadmin 中使用相同的查询后,它向我返回了 2 个名为 slug 的列。

我想我可以解决这个问题,选择每一个记录个体并将第一个 slug 设置为 slug1,第二个设置为 slug2。例如:SELECT id,username,password,b.slug as slug1,c.slug as slug2等有没有更好的方法?因为我需要解析非常多的字段,这将使查询非常庞大。为什么 php 查询只返回 1 个名为 slug 的字段,而 phpmyadmin 同时返回两个 em ?提前谢谢。

您可以在选择具有相同名称的列后指定*。例如

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.'"