2016-09-21 110 views
1

我有两个表是这样的: -内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> 
+0

尝试使用别名 – 1000111

+0

@ 1000111我应该在哪里把别名吗? –

+0

'SELECT tablea.id,tablea.Comp_name作为comp_name1 FROM表A INNER JOIN表B ON tablea.id = tableb.id' –

回答

1

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

欲了解更多信息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;?> 
+0

非常感谢:) –

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  | 
0

使用别名这类型的情况。 查询:

SELECT tablea.Comp_name as company1, tableb.Comp_name as company2 
FROM tablea 
INNER JOIN tableb ON tablea.id=tableb.id 
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

+1

感谢您的回答:) –

+0

@BillyOrigin:很高兴帮助你。 – devpro