【问题标题】:How to make this query like that in Codeigniter and mysql? [duplicate]如何在 Codeigniter 和 mysql 中进行这样的查询? [复制]
【发布时间】:2018-12-11 10:01:48
【问题描述】:

假设有两个表,即产品和产品状态

这是产品表的结构

-------------------------------------------------
|   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 表中的产品状态显示为像这样的对象数组-

$products = $product->PRODUCT_STATUS;

所以我可以循环到 $products 并打印状态。

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

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

【问题讨论】:

  • 复制将帮助您推进解决方案

标签: php mysql codeigniter


【解决方案1】:
$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();

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多