2011-10-11 50 views
2

基本上我有product和幾個model s對於那些product s。每個model有一個price選擇加入表中的最小值

這就是我打算做的事:

馬克product功能,則有它的titledescription,1對圖像的thumbnailprice最便宜model

這是我現在的查詢:

SELECT 
    product.title, 
    product.url_name, 
    product.description, 
    price.price, 
    image.thumbnail 
FROM 
    mps_contents AS product 
    LEFT OUTER JOIN 
    mps_contents AS image 
    ON 
     image.page_id = product.content_id AND 
     image.display_order = '1' AND 
     image.resource_type = 'image' 
    LEFT OUTER JOIN 
    mps_contents AS model 
    ON 
     product.content_id = model.page_id 
    INNER JOIN 
    mps_product_info AS price 
    ON 
     model.content_id = price.content_id 
WHERE 
    product.active = '1' AND 
    product.resource_type = 'product' AND 
    product.featured = '1' 
ORDER BY RAND() 
LIMIT 3 

您可能會看到我的查詢無法執行price排序,我希望有人能幫助我。我遇到的另一個問題是,如果我有多個model s,那麼product。當意圖爲每個product具有1 price時,我最終從單個product獲得具有price s的集合,用於2 model s。

我知道與ORDER BY RAND()的問題,但我會忽略它,因爲我不認爲這個網站將有更多的50個產品。

回答

3

我覺得這樣的事情應該工作....

SELECT 
    product.title, 
    product.url_name, 
    product.description, 
    A.price, 
    image.thumbnail 
FROM 
    mps_contents AS product 
    LEFT OUTER JOIN 
    mps_contents AS image 
    ON 
     image.page_id = product.content_id AND 
     image.display_order = '1' AND 
     image.resource_type = 'image' 
    LEFT OUTER JOIN (
     SELECT price.price 
     FROM mps_contents AS model 
     JOIN mps_product_info price ON (model.content_id = price.content_id) 
     WHERE model.page_id = product.content_id 
     ORDER BY price.price 
     LIMIT 1 
) AS A 
WHERE 
    product.active = '1' AND 
    product.resource_type = 'product' AND 
    product.featured = '1' 
ORDER BY RAND() 
LIMIT 3 
+0

語法錯誤主查詢的'WHERE'發現之前。也許是因爲'LEFT OUTER JOIN's不應該被這種別名?我通過將子查詢移動到SELECT子句來修改查詢。感謝子查詢的想法! –