SQL在单个类别中选择产品

Nat*_* II 2 mysql sql coldfusion

所以这就是我想要做的.我的老板想把我们所有的车辆放在我们的主页上,并一次随机拉出其中的8辆.我们设置数据库模式的方式是使用交叉引用将产品和类别放在单独的表中,以查找产品所属的类别.具有类别的表具有父级,该父级是来自另一个类别的直接ID.所以这是我提出的SQL.

  SELECT      product.productID, 
              product.productSKU, 
              product.price, 
              product.name,
             product.stateInd, 
              category.parentID,
              category.categoryID,
              prod_cat.productID FROM category

LEFT JOIN prod_cat
     ON prod_cat.categoryID = category.categoryID
LEFT JOIN product
     ON product.productID = prod_cat.productID

WHERE category.parentID =  <cfqueryparam value="#catID#" cfsqltype="cf_sql_varchar" /> AND product.name <> "" AND RAND() 

LIMIT 8
Run Code Online (Sandbox Code Playgroud)

我希望一切都有道理.我只是在最艰难的时候不仅要拉8种产品,还要确保这8种产品都是独一无二的.哦,我确实尝试在选择之后放入DISTINCT,但产品仍然被选中两次.

谢谢!

And*_*mar 5

DISTINCT应该有效.如果没有,请尝试group by productId.要选择随机行,请按顺序排序rand()而不是where rand()构造.

结合这两个:

WHERE  category.parentID = <cfqueryparam value="#catID#" cfsqltype="cf_sql_varchar"/>
       AND product.name <> ""
GROUP BY
       product.productID
ORDER BY
       RAND() 
LIMIT  8
Run Code Online (Sandbox Code Playgroud)