在oscommerce中查询未售出产品的日期范围

时间:2014-08-29 15:01:04

标签: mysql sql oscommerce

我在下面的查询中检查了我的oscommerce商店中未售出的商品。

  

$ products_query_raw =“       从(“。TABLE_PRODUCTS。”p,“。”中选择p.products_id,p.products_quantity,p.products_model,pd.products_name。   TABLE_PRODUCTS_DESCRIPTION。 “pd)LEFT JOIN”。 TABLE_ORDERS_PRODUCTS   。 “op ON p.products_id = op.products_id其中op.products_id为空   和p.products_id = pd.products_id命令由p.products_model“;

这似乎工作正常,但我想限制它在日期范围内搜索未售出的产品。 订单的日期位于表ORDER中,订购的产品位于表ORDER_PRODUCTS中。

我尝试了一些事情,但我似乎无法做到正确,如果有人可以帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我实际上今天早上只是问了几乎同样的问题,但更笼统地说MySQL Querying Multiple Tables

@evanv做了很好的解释它的诀窍......另外,@ aphextwix指出了使用JOIN的一个很棒的教程http://www.sitepoint.com/understanding-sql-joins-mysql-database/

让我搞砸的部分是LEFT JOIN和子查询。

以下是我认为你想要的oscommerce术语...

$number_of_days = "7";
$unsold_products_query = tep_db_query("SELECT a.* FROM " . TABLE_PRODUCTS . " AS a LEFT JOIN (SELECT products_id FROM " . TABLE_ORDERS_PRODUCTS . " as b INNER JOIN " . TABLE_ORDERS . " AS c ON b.orders_id = c.orders_id WHERE c.date_purchased >= date_sub(c.date_purchased, INTERVAL " . $number_of_days . " day) GROUP BY products_id) AS d ON a.products_id = d.products_id WHERE d.products_id IS NULL");
$unsold_products_array = tep_db_fetch_array($unsold_products_query);

如果您想使用上次购买该日期之外的日期,您当然需要替换date_sub()函数中的c.date_purchased。

希望它有所帮助。