如何像在Codeigniter和mysql中一样进行此查询?

时间:2018-07-03 07:16:21

标签: php mysql codeigniter

假设有两个表,即product和product_status

这是产品表的结构

-------------------------------------------------
|   ID   |   PRODUCT_NAME   |    PRODUCT_DESC   |
-------------------------------------------------
|   1    |      abc         |    abc desc       |
-------------------------------------------------
|   2    |      xyz         |    xyz desc       |
-------------------------------------------------

这是product_status表的结构

-------------------------------------------------
|   ID   |   PRODUCT_ID     |    PRODUCT_STATUS |
-------------------------------------------------
|   1    |        1         |      status 1     |
-------------------------------------------------
|   2    |        1         |      status 2     |
-------------------------------------------------

如果我通过php(codeigniter)进行查询,那么它将显示这样的数据。

$this->db->where('ID',1);
$query = $this->db->get('product');
$product = $query->row();

echo $product->PRODUCT_NAME;

但是我的问题是如何从product_status表中获取该特定产品ID的状态,而无需执行其他查询?我的意思是我想要一个查询,该查询将获取一条记录(因为id是唯一的),并将产品表中的产品数据以及product_status表中的产品状态显示为像这样的obejct数组-

$products = $product->PRODUCT_STATUS;

所以我可以遍历$ products并打印状态。

foreach ($products as $p) {
    echo $p;
}

是否可以不进行其他查询?

1 个答案:

答案 0 :(得分:0)

$sql = sprintf("SELECT p.*, ps.PRODUCT_STATUS FROM product p LEFT JOIN product_status ps ON(p.ID = ps.PRODUCT_ID) WHERE p.ID=%d", $product_id);
$query = $this->db->query($sql);
$product = $query->row();