首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL选择中的多个表和关系

MySQL选择中的多个表和关系
EN

Stack Overflow用户
提问于 2012-03-17 05:46:19
回答 1查看 245关注 0票数 1

我有一个与这些SKU_ID相关的产品SKU和选件的数据库。

我有一个产品,比如说$productId,它是一件有三种颜色(粉色、紫色、黑色)的T恤。这里是数据库信息(仅显示相关信息):

代码语言:javascript
复制
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

我不能很好地处理我的查询。如果这是我需要做的,那么就这么做吧。这是我的尝试:

代码语言:javascript
复制
$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分钟的尝试似乎证明了我可以这样做。

现在,我尝试创建一个处理颜色的选项字符串。

我的结果应该是

粉色、紫色、黑色

这是一个简单的结果,但我将在后面扩展它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-17 05:54:45

我认为使用join会让这件事变得更容易:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9744906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档