为了账号安全,请及时绑定邮箱和手机立即绑定

使用相同的表别名左连接多个表(只有一个会根据条件加载)

使用相同的表别名左连接多个表(只有一个会根据条件加载)

PHP
aluckdog 2021-11-05 15:48:52
我有一个我们在数据库中使用的表列表,用于存储在其自己的数据库中的产品。我使用此代码设置了一组“表格”。$TABLES_QUERY = $db1q->query("SELECT t.table FROM Product_Tables as t WHERE t.visibility = 1 ORDER BY t.sort_order ASC") or die ('Unable to execute query. '. mysqli_error($db1q));    if ($TABLES_QUERY->num_rows > 0) {     while ($TABLES = $TABLES_QUERY->fetch_assoc()) {        $query_tables_array[] = $TABLES['table'];    }    }我试图在我们的库存系统中做的是从正确的表中提取数据,而不必写出每个表,并且每个表都有一个唯一的表别名。这意味着每次创建新的产品表时,都必须更新代码。我宁愿将该表添加到表数据库中,并且代码仍然有效....下面是我试图使用的代码......if (!empty($query_tables_array)) {    foreach ($query_tables_array as $val) {         $SKU_QUERY .= " LEFT JOIN ". $val ." as ptbl ON    (s.product_table='". $val ."' and ptbl.id = s.part_number_id)";    }    }有条件应用于表,所以只应调用一个,但它抛出错误不是唯一的表/别名:'ptbl'有没有正确的方法可以做到这一点?我在 SELECT 查询中使用 ptbl 从 LEFT JOIN'D 表中获取数据,因此如果有办法,我希望能够像我尝试的方式那样执行此操作。这可能很令人困惑,所以如果您有任何其他问题,请告诉我。
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

问题是 $query_tables_array 有多个项目,您只能在同一个查询中使用一次别名。我会把它改成


if (!empty($query_tables_array)) 

  { foreach ($query_tables_array as $val) 

    { $SKU_QUERY .= " LEFT JOIN ". $val ." 

      ON (s.product_table='". $val ."' and $val.id = s.part_number_id)"; 

    } 

  }


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信