2014-08-29 51 views
0

我有以下查詢以檢查我的oscommerce商店中未售出的產品。查詢oscommerce中未售出產品的日期範圍

$ products_query_raw = 「(。TABLE_PRODUCTS。 」P「。 TABLE_PRODUCTS_DESCRIPTION。 」PD)LEFT JOIN「 選擇p.products_id,p.products_quantity,p.products_model,從pd.products_name」。 TABLE_ORDERS_PRODUCTS 。 「op ON p.products_id = op.products_id where op.products_id is NULL and p.products_id = pd.products_id order by p.products_model」;

這似乎工作正常,但我想限制它在日期範圍內搜索未售出的產品。 訂單的日期位於表ORDER中,訂單產品在ORDER_PRODUCTS表中。

我嘗試了幾件事情,但我似乎無法做到,如果有人能夠幫助我,我將不勝感激。

回答

1

我今天早上從字面上問了幾乎這個相同的問題,但用更一般的術語MySQL Querying Multiple Tables

@evanv做得很好解釋它的伎倆......此外,@aphextwix指出了使用偉大的教程的JOIN http://www.sitepoint.com/understanding-sql-joins-mysql-database/

這是擰我是在LEFT JOIN的部分和子查詢。

這裏是我想你自從方面希望查詢...

$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如果你想使用比其他的日期該項目上次購買的日期。

希望它有幫助。