如果相同数据显示一个字段

时间:2013-05-07 02:26:44

标签: mysql codeigniter

我使用了codeigniter,我有查询模型来显示数据

function get_accfotografer(){
        $sql="SELECT
  `artikel`.`foto_naam`,
  `fotografer`.`id` AS 'fotografer_id',
  `customer`.`id` AS 'customer_id',
  `fotografer`.`name_fotografer`,
  `customer`.`first_name`,
  `customer`.`last_name`,
  `fotografer`.`domain_name`,
  `fotografer`.`email`,
  `order`.`invoice_no`,
  `order`.`order_cost`,
  `order`.`total_cost`,
  `order`.`invoice_date`,
  `order`.`payment`,
  `order`.`status`
FROM
  `artikel_group`
  INNER JOIN `artikel` ON `artikel`.`artikelgroup_id` = `artikel_group`.`id`
  INNER JOIN `fotografer` ON `artikel_group`.`fotografer_id` = `fotografer`.`id`
  INNER JOIN `order_has_artikelgroup` ON `order_has_artikelgroup`.`artikelgroup_id` = `artikel_group`.`id`
  INNER JOIN `order` ON `order`.`id` = `order_has_artikelgroup`.`order_id` 
  INNER JOIN `customer` ON `order`.`customer_id` = `customer`.`id`
";
        $row=$this->db->query($sql);
        return $row;
      }

然后在控制器中我使用了代码

$data['accphotografer'] = $this->M_admin->get_accfotografer()->result();

在视图中

        <?php foreach ($accphotografer as $data) { ?>
            <tbody>
                <tr>
                    <td><?php echo $no; ?></td>
                    <td><?php echo $data->name_fotografer ?></td>
                    <td><?php echo $data->email ?></td>
                    <td><?php echo $data->domain_name ?></td>
                    <td><?php echo $data->first_name ?> <?php echo $data->last_name ?></td>
                    <td><?php echo $data->foto_naam ?></td>
                    <td><?php echo $data->invoice_no ?></td>
                    <td><?php echo $data->invoice_date ?></td>
                    <td><?php echo $data->order_cost ?></td>
                    <td><?php echo $data->total_cost ?></td>
                    <td><?php echo $data->payment ?></td>
                    <td><?php echo $data->status ?></td>
                    <td>
                    <?php echo anchor('admin/order_delete/' . $data->fotografer_id, 'Delete', array('class' => 'delete', 'onclick' => "return confirm('you sure delete?')")); ?></td>
                </tr>
            </tbody>

            <?php $no = $no + 1; ?>
        <?php } ?>
    </table>

示例结果是

1   lekto   jhon@yahoo.com  www.jhon.com    Romualdus Bimantara Pre-School_Child.jpg
dp-0413-000027  2013-04-26  200.00  0.00    contant paid    Delete
2   lekto   jhon@yahoo.com  www.jhon.com    dinda sari  Pre-School_Child.jpg
dp-0413-000028  2013-04-26  145.00  0.00    contant paid    Delete
3   lekto   jhon@yahoo.com  www.jhon.com    lugas hakim Pre-School_Child.jpg
dp-0513-000030  2013-05-03  104.00  0.00    contant paid    Delete
4   lekto   jhon@yahoo.com  www.jhon.com    lugas hakim Pre-School_Child.jpg
dp-0513-000032  2013-05-03  224.00  0.00    contant paid    Delete

我的问题是如果数据是相同的例子,如何显示一个数据

name   | email           | customer | invoice no
lekto  |  jhon@gmail.com | dinda sari| 001
       |                 |           | 002
       |                 | lugas     | 012
jhon   | jsn@gmail.com   | dinda     | 013

请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

您可以像这样使用GROUP BY:

$sql="SELECT
  `artikel`.`foto_naam`,
  `fotografer`.`id` AS 'fotografer_id',
  `customer`.`id` AS 'customer_id',
  `fotografer`.`name_fotografer`,
  `customer`.`first_name`,
  `customer`.`last_name`,
  `fotografer`.`domain_name`,
  `fotografer`.`email`,
  `order`.`invoice_no`,
  `order`.`order_cost`,
  `order`.`total_cost`,
  `order`.`invoice_date`,
  `order`.`payment`,
  `order`.`status`
FROM
  `artikel_group`
  INNER JOIN `artikel` ON `artikel`.`artikelgroup_id` = `artikel_group`.`id`
  INNER JOIN `fotografer` ON `artikel_group`.`fotografer_id` = `fotografer`.`id`
  INNER JOIN `order_has_artikelgroup` ON `order_has_artikelgroup`.`artikelgroup_id` = `artikel_group`.`id`
  INNER JOIN `order` ON `order`.`id` = `order_has_artikelgroup`.`order_id` 
  INNER JOIN `customer` ON `order`.`customer_id` = `customer`.`id`
  GROUP BY `fotografer`.`email`
";