繁体   English   中英

如何从两个不同的表中显示具有相同名称的列?

[英]How can I display columns with the same name from two different tables?

我从两个表中进行了SQL查询。 一切都运行良好,但问题是这两个表有相同的字段名称,在我不知道如何正确显示它们之后,如何判断$ data ['aaa']来自表1和相同的$ data ['aaa ''来自表2

这是我的SQL查询:

    $query_str = "SELECT 
                    cm.id,
                    cm.global_category_id,
                    cm.num,
                    cm.menu_lv,
                    cm.menu_ru,
                    cm.menu_en,
                    u.id,
                    u.menu_lv,
                    u.menu_ru,
                    u.menu_en
                    FROM products_category cm, products_global_category u
                    WHERE cm.global_category_id = u.id
                    ";

并显示数据

<? foreach ($sub_category_list as $line) : ?>
<tr>
   <td><?=$line['menu_lv']?></td>   <---- here I want to display data from products_global_category u       
   <td><?=$line['sub_menu_lv']?></td>   <---- products_category cm
   <td><?=$line['sub_menu_ru']?></td>   <---- products_category cm
   <td><?=$line['sub_menu_en']?></td>   <---- products_category cm
</tr>
<? endforeach; ?>

作为解决方案,您可以更改SQL查询以为具有相同名称的字段提供别名。

例如:

SELECT somefield AS othername FROM table.

在这种情况下, somefield字段将通过别名othername

在你的情况下:

$query_str = "SELECT 
                cm.id AS cm_id,
                cm.global_category_id,
                cm.num,
                cm.menu_lv AS cm_menulv,
                cm.menu_ru AS cm_menuru,
                cm.menu_en AS cm.menuen,
                u.id as u_id,
                u.menu_lv AS u_menulv,
                u.menu_ru AS u_menuru,
                u.menu_en AS u_menuen
                FROM products_category cm, products_global_category u
                WHERE cm.global_category_id = u.id
                ";

然后在你的PHP中:

$line['u_menulv'] //Access field menu_lv from products_global_category table
$line['cm_menulv'] //Access field menu_lv from products_category table

编辑:mysql_fetch_array 文档页面中

如果结果的两列或更多列具有相同的字段名称,则最后一列将优先。 要访问同名的其他列,必须使用列的数字索引或为列创建别名。 对于别名列,您无法使用原始列名访问内容。

换句话说,要么创建如上所示的别名,要么通过数组的数字索引访问字段。

只需将您希望打印出来的记录别名相互冲突,例如:

SELECT
   table1.pid AS page_id,
   table2.pid AS product_id
FROM
   table1
LEFT JOIN
   table2
ON
   table1.id = table2.id

然后在PHP中,您可以按如下方式回显它们:

while ($row = mysql_fetch_assoc($res)) {
    echo $row['page_id'];
    echo $row['product_id'];
}

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM