0

コードイグナイターを使用しています。totalQuantity が alterQuantity より小さい製品を取得する where 句が必要です。select 句で sum を使用して totalQuantity を取得しています。

$this->db->select("products.id as productid, products.code, products.name, products.unit, products.cost, products.price, sum(whs_products.quantity) as totalQuantity, products.alert_quantity as alertQuantity")
->from('products')
->where('alertQuantity <=', 'totalQuantity')
->join('whs_products', 'whs_products.product_id=products.id', 'left')
->group_by("products.id");
$this->db->get();

目的の製品を取得する方法がわかりません:(これを試した場合は編集してください

->where('alertQuantity <=', 'totalQuantity')

私はすべての製品を取得しますが、 ->where('alertQuantity <=', 'totalQuantity') では製品はありません。

4

3 に答える 3

0

これを試して:

SELECT p.id AS productid, p.code, p.name, p.unit, p.cost, p.price, wp.quantity AS totalQuantity, p.alert_quantity AS alertQuantity
FROM products p 
LEFT JOIN (SELECT product_id, SUM(quantity) quantity 
              FROM whs_products GROUP BY product_id) wp ON wp.product_id = p.id AND p.alert_quantity <= quantity ;
于 2013-01-04T06:17:44.130 に答える
0

これを試して

$this->db->select("products.id as productid, products.code, products.name, products.unit, products.cost, products.price, sum(whs_products.quantity) as totalQuantity, products.alert_quantity as alertQuantity")
->from('products')
->join('whs_products', 'whs_products.product_id=products.id', 'left')
->where('alertQuantity <= totalQuantity')
->group_by("products.id");
$this->db->get();

echo $this->db->last_query();exit; //to check the query generated is  correct or not 
于 2013-01-04T06:27:19.037 に答える
0

selectステートメントにFALSEを追加して試してください

$this->db->select("products.id as productid, products.code, products.name, products.unit, products.cost, products.price, sum(whs_products.quantity) as totalQuantity, products.alert_quantity as alertQuantity",FALSE)

$this->db->select() は、オプションの 2 番目のパラメーターを受け入れます。FALSE に設定すると、CodeIgniter はフィールドまたはテーブル名をバッククォートで保護しようとしません。これは、複合 select ステートメントが必要な場合に便利です。

資料はこちらから

于 2013-01-04T05:51:04.113 に答える