使用CodeIgniter连接多个表

时间:2014-01-27 16:05:59

标签: php mysql codeigniter join

我需要一些帮助来从多个表中提取数据(总共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();
}

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

希望这一切都有道理!

1 个答案:

答案 0 :(得分:0)

$query = $this->db->query('enter sql query here');

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