表连接以获得输出

时间:2016-12-13 07:01:55

标签: php mysql inner-join

我试图通过加入两个表来获得结果。但我没有得到正确的结果。谁能告诉我哪里错了?

这是我的代码

$sql = "SELECT merchant.name, keyword.name
FROM keyword 
INNER JOIN merchant
ON merchant.id=keyword.merchant_id";

我的表格结构是

关键字

1.name(关键字名称)

2.merchant_id

商户

1.id

2.name(商家名称)

结果sholud就像这样

商家名称||||||关键字名称

和SQL提取查询是

while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
{

  echo "<tr><td>".$row['name']."</td><td>".$row['name']."</td>";

 }

但输出是

关键字名称||||||关键字名称

enter image description here

只有我得到关键字名称

任何人都可以告诉我哪里错了。 (抱歉我的英语不好)

3 个答案:

答案 0 :(得分:2)

不要使用mysql使用Mysqli

你可以尝试

$sql = "SELECT merchant.name as mname, keyword.name as kname FROM keyword INNER JOIN merchant  ON merchant.id=keyword.merchant_id";

echo "<tr><td>".$row['mname']."</td><td>".$row['kname']."</td>";

答案 1 :(得分:1)

试试这个

$sql = "SELECT merchant.name as m_name, keyword.name as a_name
    FROM keyword 
    INNER JOIN merchant
    ON merchant.id=keyword.merchant_id";

然后

while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
{

  echo "<tr><td>".$row['m_name']."</td><td>".$row['a_name']."</td>";

 }

答案 2 :(得分:1)

问题出现是因为您在查询中有两个列具有相同的名称,第二个列首先覆盖。试试这个:

$sql = "SELECT merchant.name as mer_name, keyword.name as k_name  // Aliasing for column names
FROM keyword 
INNER JOIN merchant
ON merchant.id=keyword.merchant_id";

并使用它:

$row['mer_name'], $row['k_name'];