【问题标题】:table joining to get output表连接以获取输出
【发布时间】:2016-12-13 07:01:54
【问题描述】:

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

这是我的代码

$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(商家名称)

结果应该是这样的

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

SQL fetch 查询是

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

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

 }

但是输出是

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

只有我得到关键字名称

谁能告诉我哪里错了。 (对不起我的英语不好)

【问题讨论】:

  • echo " ".$row['name']." ".$row['name']."" ;两者都是同一个变量
  • 再次不要使用mysql_ 函数...它们已被弃用
  • 需要更改变量名吗?

标签: php mysql inner-join


【解决方案1】:

不要使用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>";

【讨论】:

    【解决方案2】:

    试试这个

    $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>";
    
     }
    

    【讨论】:

    • 这也很有帮助:)
    【解决方案3】:

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

    $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'];
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签