【问题标题】:How can I display columns with the same name from two different tables?如何显示两个不同表中同名的列?
【发布时间】:2011-12-25 20:19:04
【问题描述】:

我从两个表中进行了 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; ?>

【问题讨论】:

    标签: php sql


    【解决方案1】:

    作为一种解决方案,您可以更改 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_arraydocumentation page

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

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

    【讨论】:

      【解决方案2】:

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

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

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2020-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多