【问题标题】:Joining Multiple Tables using CodeIgniter使用 CodeIgniter 连接多个表
【发布时间】:2014-01-27 16:05:58
【问题描述】:

我需要一些帮助来从多个表(共 3 个)中提取数据。我知道有 JOIN 选项,但我仍然遇到了一些麻烦。不确定我是否可以在一个查询中加入表以获得我的结果。在发布我尝试的代码之前,我将尝试解释我在做什么......

我正在尝试在我的网站上创建“库存需求”部分。我有一个INVENTORY_PRODUCTS 表,我在其中检查UNITSINSTOCK 列是否小于MINLEVEL 数量。很简单。但我还需要检查该产品是否“已订购”。为此,我需要检查我的 INVENTORY_ORDERSINVENTORY_ORDER_DETAILS 表。

订单状态在INVENTORY_ORDERS 表中(如果是1NULL),然后订单的详细信息在INVENTORY_ORDER_DETAILS 中。因此,如果该项目存在,我将需要 SUM

我的 HTML 表格包含以下列:Product #, Min, Max, Stock, On Order and Need

这是我正在尝试使用的:

    function get_inventory_below_need($mfctId) {

    $this->db->select('
        INVENTORY_PRODUCTS.ID, INVENTORY_PRODUCTS.PRODUCTNUMBER, INVENTORY_PRODUCTS.MINLEVEL, INVENTORY_PRODUCTS.MAXLEVEL, INVENTORY_PRODUCTS.UNITSINSTOCK,
        SUM(INVENTORY_ORDER_DETAILS.QUANTITY) AS ORDERQTY
    ');
    $this->db->from('INVENTORY_PRODUCTS');
    $this->db->join('INVENTORY_ORDER_DETAILS', 'INVENTORY_ORDER_DETAILS.PRODUCTID = INVENTORY_PRODUCTS.ID', 'INNER');
    $this->db->join('INVENTORY_ORDERS', 'INVENTORY_ORDERs.ID = INVENTORY_ORDER_DETAILS.ORDERID', 'LEFT');
    $this->db->where('INVENTORY_PRODUCTS.MANUFACTURERID', $mfctId);
    $this->db->where('INVENTORY_ORDERS.STATUS != 9');
    $this->db->where('INVENTORY_PRODUCTS.UNITSINSTOCK < INVENTORY_PRODUCTS.MINLEVEL');
    $this->db->group_by('INVENTORY_PRODUCTS.PRODUCTNUMBER');
    $this->db->order_by("INVENTORY_PRODUCTS.PRODUCTNUMBER", "asc");

    $query = $this->db->get();

    return $query->result();
}

问题在于它只显示库存水平低于最低水平并且当前正在订购的商品。但是我有一些产品低于最低标准并且没有被订购。

希望这一切都有意义!

【问题讨论】:

  • 如果您可以访问 mysql(通过 phpmyadmin 或其他方式),我建议您先写出查询,看看您是否获得了正确的数据,然后将该查询转换为活动记录类(如果这就是你想要使用的)
  • 你试过不留$this-&gt;db-&gt;join('INVENTORY_ORDERS', 'INVENTORY_ORDERs.ID = INVENTORY_ORDER_DETAILS.ORDERID', 'LEFT');吗?

标签: php mysql codeigniter join


【解决方案1】:
$query = $this->db->query('enter sql query here');

确定您必须输入要使用的查询,但它很可能看起来更好,如果您使用 PHP MyAdmin 或有其他方式访问数据库,您可以对其进行测试。

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多