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

时间:2015-01-27 10:48:26

标签: php mysql

$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对象列表之后,我看到只有一个名为slug的collumn。我在phpmyadmin中使用相同的查询后,它返回2个名为slug的列。

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

1 个答案:

答案 0 :(得分: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.'"