MYSQL内部连接两个表相同列名称不同的值

时间:2016-09-21 07:10:37

标签: php mysql

我有两张这样的表: -

Tablea
-------
id|Comp_name|
1 |abc  |

Tableb
--------
ids|id|Comp_name|
2  |1 |def| 

我试图将这两个表连接成一个带有这样的查询的表

SELECT * FROM tablea 
INNER JOIN tableb ON tablea.id=tableb.id

结果是这样的

id|Comp_name|ids|Comp_name|
1 |abc      |2  |def|

。 如何将Comp_name值分成php? 我试过像这样的代码但是失败了: -

foreach($query->result() as $row){
echo '<tr class="'.$class.'">
         <td>
            '.$row->Tablea.Comp_name.'
         </td>
         <td>
            '.$row->Tablea.Comp_name.'
         </td>

4 个答案:

答案 0 :(得分:2)

可以在查询选择列表中使用别名为列提供不同的名称。

了解更多信息Click此处。

SQL查询看起来像

SELECT tablea.id,tablea.Comp_name AS compname_a, tableb.* 
FROM tablea 
INNER JOIN tableb ON tablea.id=tableb.id

PHP

<?php foreach($query->result() as $row):?>

<tr class="<?php echo $class?>">
    <td><?php echo $row->compname_a ?></td>
    <td><?php echo $row->Comp_name ?></td>
</tr>   

<?php endforeach;?>

答案 1 :(得分:1)

对于您想要的输出,您只需使用alias从两个表中获取相同的列名值。

修改后的查询:

SELECT tablea.id, tablea.Comp_name as FirstVal, 
tableb.ids, tableb.Comp_name as SecondVal
FROM tablea 
INNER JOIN tableb ON tablea.id=tableb.id

你可以在php中找到类似的东西:

$row->FirstVal // for ist value
$row->SecondVal // for second value

您还可以浏览更多内容: MYSQL Alias

答案 2 :(得分:0)

您可以尝试以下操作:

SELECT id, tablea.Comp_name as A_Comp_name, ids, tableb.Comp_name as B_Comp_name 
FROM tablea 
INNER JOIN tableb ON tablea.id=tableb.id

结果将是这样的:

id|A_Comp_name|ids|B_Comp_name|
1 |abc        |2  |def        |

答案 3 :(得分:0)

在这种情况下使用别名。 查询:

SELECT tablea.Comp_name as company1, tableb.Comp_name as company2
FROM tablea 
INNER JOIN tableb ON tablea.id=tableb.id