magento 库存 sql

magento stock sql

SELECT sku, qty FROM `cataloginventory_stock_item` i join `catalog_product_entity` e on i.product_id = e.entity_id where i.qty <= 100 and i.is_in_stock 

我想要一个获取产品 skusupplier_barcode 的查询 supplier_sku 库存少于 100。 supplier_barcodesupplier_sku 为自定义属性。

上面的查询只给出了 sku,qty where qty <=100

您需要找出您需要的 table 和 attribute_id

运行这个查询找出来:

SELECT t1.attribute_id, t1.attribute_code, t1.backend_type
FROM eav_entity_type AS t0
INNER JOIN eav_attribute AS t1
  ON (t0.entity_type_id = t1.entity_type_id)
WHERE (t0.entity_model = 'catalog/product')

这会给你这样的东西:

attribute_id | attribute_code      | backend_type
------------ | ------------------- | ------------
230          | brand               | varchar     
228          | cardboard_height_cm | varchar     
227          | cardboard_width_cm  | varchar     
108          | category_ids        | static      
92           | color               | int         
79           | cost                | decimal     

然后您可以像这样构建查询:

SELECT t1.entity_id, t1.attribute_id, t1.entity_type_id, t1.store_id, t1.value, t1.value_id
FROM catalog_product_entity AS t0
LEFT OUTER JOIN catalog_product_entity_varchar AS t1
  ON (((t1.attribute_id = 71) AND (t1.store_id = 0)) AND (t1.entity_id = t0.entity_id))
WHERE (t0.sku IS NOT NULL)
ORDER BY t0.sku

然后您可以根据需要加入。


下面是您需要的连接查询类型示例:

SELECT t0.sku, t1.qty, t2.value, t3.value AS value1
FROM catalog_product_entity AS t0
INNER JOIN cataloginventory_stock_item AS t1
  ON (t0.entity_id = t1.product_id)
INNER JOIN (
  SELECT t4.entity_id, t4.value
  FROM catalog_product_entity_varchar AS t4
  WHERE ((t4.attribute_id = 71) AND (t4.store_id = 0))
  ) AS t2
  ON (t0.entity_id = t2.entity_id)
INNER JOIN (
  SELECT t5.entity_id, t5.value
  FROM catalog_product_entity_varchar AS t5
  WHERE ((t5.attribute_id = 207) AND (t5.store_id = 0))
  ) AS t3
  ON (t0.entity_id = t3.entity_id)
WHERE ((t0.sku IS NOT NULL) AND (t1.qty <= 100))