我在下面的查询中检查了我的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中。
我尝试了一些事情,但我似乎无法做到正确,如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:1)
我实际上今天早上只是问了几乎同样的问题,但更笼统地说MySQL Querying Multiple Tables。
让我搞砸的部分是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。
希望它有所帮助。