Everyday NetLog

快捷导航
专栏分类
Oct 17

Inner join使用心得体会 多云

今天写了一个方法,返回一个查询记录集数组.
因为返回的是一个多维数组,所以要在返回时再将数组取出一层.直接返回.
开始写的联合查询时,用的是
$sql = "select * from A";
这样结果返回时,压入新的数组中,关连两张表时,会把符合条件的第二张表所有的字段也抽出来了。出现两个id,这样结果就会将第二张表的id压入到新的数组对象中。
而这样,就不是我所需要的值了。出现结果错误了。
后来,发现一个新东东,如果单独抽取字段,即:
$sql = "select A.id, A.name from A";
这样返回时,只返回了这两个字段。id,name

附代码:


function searchList($zhoz_type = null, $offset = null, $limit = null) {
    
  // 开始写sql
  $sql = "select A.id, A.name from A";

  if ($Zhoz_type == "MYFLASH") {
    $sql .= " inner join B on (A.id = B.zhoz_id and B.delete_flg = false and B.is_open = true)";
  }
  $sql .= " where A.is_checked = false and A.delete_flg = false";
  if ($Zhoz_type != null) {
    $sql .= " and A.zhoz_type = '" . $zhoz_type . "'";
  }
  
  if ($offset != null && is_numeric($offset)) {
    $sql .= " OFFSET " . $offset;
  }
  if ($limit != null && is_numeric($limit)) {
    $sql .= " LIMIT " . $limit;
  }
  
  // 执行
  $db = FlashProfDBManager::getInstance();
  $data = $db->executeQuery($sql);
  
  // 将结果新压入
  $result = array();
  foreach ($data as $row) {
    $tmp = new ZhozMst($row);
    array_push($result, $tmp);
  }
  
  // 返回
  return $result;
}

作者:@Everyday NetLog
地址:https://log.zhoz.com/read.php?28
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

Tags:
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]