2

我有一个表格结构供用户订购到各种商店,如下所示。现在我想获取查询将在 codeigniter

  1. 选择shop_id列表属于user_id
  2. 选择属于shop_id和user_id的产品列表
  3. 然后它将进入一个数组。

像这样:请给我一个查询。我尝试过单独的函数,但我需要一个使用连接的函数
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
4

1 回答 1

2

您可以使用仅需要用户 ID 的单个查询,并获取所有必需的内容。

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();
}
于 2013-10-26T06:37:45.940 回答