2011-10-11 51 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子句来修改查询。感谢子查询的想法! –