我需要一些帮助来从多个表(总共 3 个)中提取数据。我知道有 JOIN 选项,但我仍然遇到一些麻烦。不确定我是否可以在一个查询中加入表来获取结果。在发布我尝试的代码之前,我会尝试解释我在做什么...
我正在尝试在我的网站上创建“库存需求”部分。我有一个 INVENTORY_PRODUCTS
表,我在其中检查 UNITSINSTOCK
列是否小于 MINLEVEL
数量。很简单。但我还需要检查该产品是否是“按订单”。为此,我需要检查我的 INVENTORY_ORDERS
和 INVENTORY_ORDER_DETAILS
表。
订单的状态位于 INVENTORY_ORDERS
表中(如果是 1
或 NULL
),然后订单的详细信息位于INVENTORY_ORDER_DETAILS
。因此,我需要该项目的 SUM
(如果存在)。
我的 HTML 表格包含以下列:产品编号、最小值、最大值、库存、按订单和需要
。
这就是我正在尝试使用的:
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();
}
问题是它只显示库存水平低于最低水平且当前正在订购的商品。但我有一些低于最低级别的产品并且没有被订购。
希望这一切都是有意义的!
最佳答案
$query = $this->db->query('enter sql query here');
当然,您必须键入要使用的查询,但它很可能看起来更好,如果您使用 PHP MyAdmin 或有其他方式访问数据库,您可以测试它。
关于php - 使用 CodeIgniter 连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21385650/