Как отобразить данные только один раз, используя два результата запроса - PullRequest
0 голосов
/ 14 ноября 2018

Как мне избежать многократной печати данных на моей странице просмотра .. Я попробовал этот запрос в моем phpmyadmin, чтобы он отображал правильный результат .. Но я получаю данные, напечатанные несколько раз .. Как мне избежать этого .. Я пытался $this->db->distinct(); $this->db->group_by(vno).. но я не получил ожидаемый результат .. Помогите мне достичь этого .. Вот мой проверенный код:

Код контроллера:

$this->db->where('billdate >=', $newDate);
$this->db->where('billdate <=', $newDate2);
$this->db->select('');
$this->db->from('purchaseitem');
$this->db->distinct();
//$this->db->join('purchasebill', 'purchasebill.no = purchaseitem.billno','left outer');
$this->db->join('itemmaster','itemmaster.itcode = purchaseitem.Product_Code','left outer');
$query = $this->db->get('')->result_array();
$data['query'] = $query;
$this->db->where('date >=', $newDate);
$this->db->where('date <=', $newDate2);
$this->db->select();
$this->db->from('purchasebill');
$this->db->order_by('voucherno');
$this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
$query = $this->db->get('')->result_array();
$data['query1'] = $query;

$this->load->view('Receipt_View1', $data);

My Current output

Просмотр кода:

<?php $rowcount = 1 ?>                          
<?php foreach ($query1 as $row): ?>

        <tr>
            <td><?=$rowcount;?></td>
            <td><?=$row['voucherno'];?></td>
            <td><?=$row['date'];?></td>
            <td><?=$row['PName'];?></td>
            <?php $rowcount +=1?>
            <?php foreach ($query as $row): ?>
                <tr>
            <td><?=$row['itemname'];?></td>
            <td><?=$row['Qty'];?></td>
            <td><?=$row['bundle'];?></td>

            <?php endforeach ?> 
            <?php endforeach ?> 
        </tr></tr>
        <?php $total_qty=0; ?>  
    <?php foreach($query as $row): ?>
            <?php $total_qty += $row['Qty'];?>
        <?php endforeach ?>
        <?php $total_bundle=0; ?>   
    <?php foreach($query as $row): ?>
            <?php $total_bundle += $row['bundle'];?>
        <?php endforeach ?>

Проблема заключается в таблице покупок, потому что согласно ваучеру нет необходимости печатать записи в таблице, но он печатает все данные, которые доступны с даты и до даты. Я попытался поставить условие где, но это результат ничего из таблицы .. нет идей, как мне указать ваучер №..это мой код где $this->db->where('vocuerno','vno) .. у меня есть ваучер № как на элемент покупки, так и на таблицу счетов

1 Ответ

0 голосов
/ 14 ноября 2018

Вам необходимо использовать GROUP_BY во втором запросе, а не в первой части.

Попробуйте добавить его сюда, показывая из строки 10 в коде вашего контроллера

....

$this->db->where('date >=', $newDate);
$this->db->where('date <=', $newDate2);
$this->db->from('purchasebill');
$this->db->order_by('voucherno');
$this->db->group_by('voucherno'); // <- HERE
$this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
$query = $this->db->get('')->result_array();
$data['query1'] = $query;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...