2013-10-25 117 views
2

我有一个表结构用户订单到像下面的各种商店。现在,我想要得到的查询将是笨codeigniter加入查询为同一个表

  1. shop_id的选择列表属于USER_ID
  2. 选择的产品列表中,则属于shop_id和user_id说明
  3. 然后,它会进入一个单阵列。

就像这样:请给我this.I查询试图独立的功能,但我需要使用连接的单一功能
user_id -> shop_id -> products [0] ->product_name1 [1] -> product_name2`

Table : at_order 
+----+------------+-----------+------------+ 
| id | user_id | shop_id | product-id | 
+----+------------+-----------+------------+ 
| 1 | 3   | 3   |   32| 
| 2 | 3   | 3   |   24| 
| 3 | 3   | 4   |   3 | 
| 4 | 4   | 3   |   8 | 
| 5 | 4   | 5   |   4 | 
| 6 | 4   | 6   |   1 | 
+----+------------+-----------+------------+ 

function main() 
{ 
    SELECT 
     `shop_id` 
    FROM (`at_order`) 
    WHERE `user_id` = '3' 
    GROUP BY `shop_id`; 
    one($shop_id,$user_id); 

} 

function one() 
{ 
    SELECT 
     `product_id`, 
     `order_status` 
    FROM (`at_order`) 
    WHERE `user_id` = '3' 
     AND `shop_id` = '5'; 
    two($shop_id,$product_id); 
} 

function two() 
{ 
    SELECT * 
    FROM (`at_product`) 
    WHERE `product_id` = '35' 
     AND `shop_id` = '5' 
} 

我有三个函数编写这三个查询和在主要功能中加入此功能

Please help 
+0

你能清除你的问题吗 –

回答

2

您可以使用仅需要用户标识的单个查询并获取所有必需的东西。

function getUserProducts($user_id){ 

    $query = "SELECT 
        as.shop_name, 
        ap.* 
       FROM at_order ao 
       LEFT JOIN at_product ap 
        ON ap.product_id = ao.product_id 
       LEFT JOIN at_shops as 
        ON as.shop_id = ao.shop_id 
       WHERE ao.user_id = $user_id"; 
    return $this->db->query($query)->result_array(); 

    //Or Active Record Version 

    return $this->db 
       ->select('ao.shop_name') 
       ->select('ap.*') 
       ->from('at_order ao') 
       ->join('at_product ap ','ap.product_id = ao.product_id','left') 
       ->join('at_shops as','as.shop_id = ao.shop_id','left') 
       ->where('ao.user_id',$user_id) 
       ->get() 
       ->result_array(); 
}