我有一个与这些SKU_ID相关的产品SKU和选件的数据库。
我有一个产品,比如说$productId,它是一件有三种颜色(粉色、紫色、黑色)的T恤。这里是数据库信息(仅显示相关信息):
tbl_skus
SKU_ID SKU_ProductID
62 32
63 32
64 32
62 32
62 32
67 32
tbl_skuoption_rel
optn_rel_SKU_ID optn_rel_Option_ID
62 32
62 34
63 34
63 33
64 35
64 32
65 35
65 33
66 36
66 32
67 36
67 33
tbl_skuoptions
option_ID option_Type_ID option_Name option_Sort
32 5 Small 1
33 5 Medium 2
34 6 Pink 1
35 6 Purple 2
36 6 Black 3
我不能很好地处理我的查询。如果这是我需要做的,那么就这么做吧。这是我的尝试:
$SKU_QUERY = mysql_query("SELECT SKU_ID FROM tbl_skus WHERE SKU_ProductID = '$productId'") or die(mysql_error());
$SKU_NUM_ROWS = mysql_num_rows($SKU_QUERY);
if($SKU_NUM_ROWS > 0) {
while($SKU_OBJECT = mysql_fetch_object($SKU_QUERY)) {
$SKU_ID = $SKU_OBJECT->SKU_ID;
$REL_OPTION_QUERY = mysql_query("SELECT optn_rel_Option_ID FROM tbl_skuoption_rel WHERE optn_rel_SKU_ID = '$SKU_ID' LIMIT 0,1") or die(mysql_error());
$REL_OPTION_NUM_ROWS = mysql_num_rows($REL_OPTION_QUERY);
if($REL_OPTION_NUM_ROWS > 0) {
while($REL_OPTION_OBJECT = mysql_fetch_object($REL_OPTION_QUERY)) {
$OPTION_ID = $REL_OPTION_OBJECT->optn_rel_Option_ID;
$OPTIONS_QUERY = mysql_query("SELECT option_Name FROM tbl_skuoptions WHERE option_ID = '$OPTION_ID' AND option_Type_ID = '6' ORDER BY option_sort LIMIT 0,1") or die(mysql_error());
$OPTIONS_NUM_ROWS = mysql_num_rows($OPTIONS_QUERY);
if($OPTIONS_NUM_ROWS > 0) {
$OPTIONS_OBJECT = mysql_fetch_object($OPTIONS_QUERY);
echo "$OPTIONS_OBJECT->option_Name, ";
}
}
}
}
}
以下是我的结果:
粉色,紫色,紫色,黑色,黑色
如果我能去掉多余的颜色名称,那我就没问题了。我不会做超过五到六种颜色,所以在我看来,没有必要担心加载。再说一次,如果只有加入才有可能,那么我会这么做。我10分钟的尝试似乎证明了我可以这样做。
现在,我尝试创建一个处理颜色的选项字符串。
我的结果应该是
粉色、紫色、黑色
这是一个简单的结果,但我将在后面扩展它。
发布于 2012-03-17 05:54:45
我认为使用join
会让这件事变得更容易:
SELECT DISTINCT o.option_Name
FROM
tbl_skus s
JOIN tbl_skuoption_rel sor ON sor.optn_rel_SKU_ID = s.SKU_ID
JOIN tbl_skuoptions o
ON o.option_ID = sor.optn_rel_Option_ID
AND o.option_Type_ID = '6'
WHERE s.SKU_ProductID = '$productId'
ORDER BY o.option_sort
https://stackoverflow.com/questions/9744906
复制相似问题