我是Codeigniter框架工作的新成员,我正在尝试停止表中的重复记录 在我的表记录中重复,我想一次显示一个记录
这是我的代码
控制器
$modelResult = $this->freightBillModel->freightBillByDate($data);
<table id="freight_table" class="table table-bordered table-striped table-sm" style="display:block; overflow: auto; ">
<tr>
<th>SR.No</th>
<th>Bill No</th>
<th>pkgs</th>
<th>freight</th>
</tr>
<tbody>
<?php $counter = 1; ?>
<?php foreach($modelResult as $freight){?>
<tr>
<td><?php echo $counter;?></td>
<td><?php echo $freight['tbb_no'];?></td>
<?php $singleBill = $this->freightBillModel->fetchBillByNo($freight['tbb_no']); ?>
<?php $lr_freight=0; $no_of_pkgs=0; ?>
<?php foreach ($singleBill as $bill) : ?>
<?php $lr_freight+=$bill->lr_freight; ?>
<?php $no_of_pkgs+=$bill->no_of_pkgs; ?>
<?php endforeach; ?>
<td><?php echo $no_of_pkgs;?></td>
<td><?php echo $lr_freight;?></td>
</tr>
<?php $counter++; ?>
<?php }?>
</tbody>
</table>
型号:
public function freightBillByDate($data){
extract($data);
$this->db->select('bn.branch_name as to,ts_tbb.tbb_no,ts_tbb.tbb_id,ts_tbb.bilty_id,ts_tbb.current_time,ts_tbb.status,b.*');
$this->db->from('ts_tbb');
$this->db->join('bilty b', 'b.id = ts_tbb.bilty_id');
$this->db->join('branch bn', 'b.lr_to=bn.branch_id');
$this->db->where('lr_from',$lr_from);
$this->db->where('lr_to',$lr_to);
if($bill_type=="pending_bill"){
$this->db->where('billed_status','not_billed');
}else if($bill_type=="bill_register"){
$this->db->where('billed_status','billed');
}
$this->db->order_by('lr_date','desc');
$query=$this->db->get();
return $query->result_array();
}
function fetchBillByNo($billNo){
return $this->db->select('*')->from('ts_tbb')->join('bilty','bilty_id=bilty.id')->where('tbb_no',$billNo)->get()->result();
}[![In this picture first two records are repeat][1]][1]
我想显示唯一记录, 当前表显示重复的行 请告诉我我的代码在哪里错了
答案 0 :(得分:3)
如果要查询不同的行,只需使用SELECT DISTINCT而不是SELECT。
答案 1 :(得分:1)
您可以在DISTINCT
中添加select()
关键字
return $this->db
->select('DISTINCT YOUR_ID_FIELD')
->select('*')
->from('ts_tbb')
->join('bilty','bilty_id=bilty.id')
->where('tbb_no',$billNo)
->get()
->result();
否则,您可以像这样使用group by
:
$this->db->select('*');
$this->db->group_by('YOUR_ID_FIELD');
答案 2 :(得分:1)
保留重复记录不是一个好习惯,您可以删除SQL查询中所有重复的记录。
例如:
DELETE t1 FROM contacts t1
INNER JOIN
contacts t2
WHERE
t1.id < t2.id AND t1.email = t2.email;
以上SQL查询将删除重复的电子邮件行,并保留最高ID。