我有一个包含22个表的数据库,大多数表都有几个具有相同名称的列字段。当我在具有重复列名的表上使用INNER JOIN时,它将在最后一个表中忽略它们。现在我只加入3桌
SELECT * FROM company C
INNER JOIN typeofdealer PI ON C.CompanyID = PI.CompanyID
INNER JOIN typeofservices TS ON PI.CompanyID = TS.CompanyID
因此,在此示例中,typeofdealer
和typeofservices
都包含列名Other
和OtherText
当我收到此查询时,我只看到一个Other
和一个OtherText
。
我刚刚发现,当我写这篇文章时,如果我在“phpmyadmin”中进行查询,我会完全按照预期恢复。我正在使用php中的预准备语句执行此查询,并使用以下方法输出结果:
echo "<PRE>";
print_r($results);
echo "</PRE>";
我认为问题是php数组不能包含重复的字段,所以有没有办法绕过我遇到的问题?
答案 0 :(得分:1)
正如您所理解的那样,问题是PHP不允许多个条目进入具有相同键名的数组。
最简单的方法是对查询的列选择部分中的字段进行别名,如下所示:
SELECT *, typeofservices.Other as ServicesOther, typeofservices.OtherText as ServicesOtherText FROM company C
INNER JOIN typeofdealer PI ON C.CompanyID = PI.CompanyID
INNER JOIN typeofservices TS ON PI.CompanyID = TS.CompanyID
它不漂亮,但很简单。
答案 1 :(得分:1)
您可以为此做的解决方法是使用别名AS
来区分具有相同名称的列。类似的东西:
SELECT PI.Other AS Other1, PI.OtherText AS OtherText2, TS.Other AS Other2, TS.OtherText AS OtherText2 FROM company C
INNER JOIN typeofdealer PI ON C.CompanyID = PI.CompanyID
INNER JOIN typeofservices TS ON PI.CompanyID = TS.CompanyID
实际上,如果省略AS关键字SELECT PI.Other Other1, PI.OtherText OtherText2