2016-09-15 1 views
0

у меня есть это в моей квитанции UI (Примечание: Это только от одного пользователя):

Item_Name | Quantity | Price | Total 
    Panty |  2 | 50 | 100 
     Bra  |  1 | 35 | 35 
    Panty |  2 | 50 | 100 

Как вы можете видеть, пользователь получает Panty TWICE!

Я хочу, чтобы мой пользовательский интерфейс будет выглядеть как это:

Item_Name | Quantity | Price | Total 
    Panty |  4 | 50 | 100 
     Bra  |  1 | 35 | 35 

Как вы можете видеть Panty о том, что пользователь покупает группу вместе, но в моем запросе вместо Panty, имеющие 4 Количества она все еще имеет 2

Вот мой код:

public function getClientReservation($name){ 
    $this->db->select('*'); 
    $this->db->from('tbl_item_availed'); 
    $this->db->join('tbl_items','tbl_items.Item_ID = tbl_item_availed.Item_ID'); 
    $this->db->join('user_account','user_account.Account_no = tbl_item_availed.Account_no'); 
    $this->db->where('Username',$name); 
    $this->db->where('isReserve',1); 
    $this->db->where('Active',1); 
    $this->db->group_by('tbl_items.Item_Name'); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

Пожалуйста, помогите!

Это таблица tbl_item_availed кстати:

Item_availed_id | Item_ID | Quantity | Account_no 
     1   | 1 | 2  | 5 
     2   | 2 | 1  | 5 
     3   | 1 | 2  | 5 

стол tbl_items:

Item_ID | Price | Item_Name 
     1 | 100 | Panty 
     2 | 35 | Bra 

стол USER_ACCOUNT:

Account_no | Firstname | Lastname 
     1  | LeBron | James 
     2  | Dwyane | Wade 
     3  | Wilt | Chamberlain 
     4  | Michael | Jordan 
     5  | Charles | Barkley 
+0

может быть, и есть дополнительное пространство в 'колонке Item_Name' для колготки. – devpro

+0

распечатать запрос и проверить – user3040610

+0

вещь, я могу group_by() Item_Name, заставляя его иметь один Panty, но количество для обоих трусов не сливается, какой запрос я сделаю? Кажется, я чего-то пропущу! вопрос, который я предполагаю! –

ответ

0

Попробуйте это.

public function getClientReservation($name){ 
    $this->db->select('tbl_items.`Item_Name`, SUM(tbl_item_availed.`Quantity`) AS quantity, tbl_items.`Price`, (tbl_items.`Price`*(SUM(tbl_item_availed.`Quantity`))) AS total'); 
    $this->db->from('tbl_item_availed'); 
    $this->db->join('tbl_items','tbl_items.Item_ID = tbl_item_availed.Item_ID'); 
    $this->db->join('user_account','user_account.Account_no = tbl_item_availed.Account_no'); 
    $this->db->where('Username',$name); 
    $this->db->where('isReserve',1); 
    $this->db->where('Active',1); 
    //$this->db->group_by('tbl_items.Item_Name');//do not use this line unless item name is unique 
    //group by item id 
    $this->db->group_by('tbl_items.Item_ID'); 


    $query = $this->db->get(); 
    return $query->result(); 
} 

использовать также GROUP BY для ITEM_ID (предполагая, что она уникальна), не item_name, если он не является уникальным.

Примечание стороны:

Кроме того, использовать Account_no вместо username в WHERE пункте. Если вы хотите изменить его, просто замените эту строку

$this->db->where('Username',$name); 

с

$this->db->where('Account_no',$account_no); 
Смежные вопросы