2012-02-17 67 views
0

基本上我做while两次拿到主组&组值。例如如何在MySQL中加入相同的数据库名称?

$group_query = $db->query(" 
     SELECT opt_id, opt_type 
      FROM ads_options 
      WHERE opt_id = '" . intval($data['ad_id']) . "' 
      GROUP BY opt_type"); 
while ($group_data = $db->fetch($group_query)) { 
    $option_query = $db->query(" 
     SELECT * 
      FROM ads_options 
      WHERE opt_id = '" . intval($data['ad_id']) . "' 
      AND opt_type ='" . $group_data['opt_type'] . "' 
      ORDER BY opt_id DESC"); 
    while ($option_data = $db->fetch($option_query)) { 
    } 
} 

输出:

Size : S 
     M 
     L 
Color : White 
     Black 

问:

如何加入以上单个语句当前查询?

更新:

当前的数据库结构

opt_id opt_type opt_name opt_price 
1236 Size  S   0 
1236 Size  M   1 
1236 Color  Black  1 
1236 Color  White  2 

回答

1

像这样的事情会得到独特的组合,可能会有所帮助

$group_query = $db->query(" 
    SELECT 
     DISTINCT opt_id, opt_type, opt_size 
    FROM ads_options 
    WHERE opt_id = " . intval($data['ad_id']) . " 
    ORDER BY opt_type, opt_size"); 

如果你能提供更多的细节至于你正在努力实现什么,以及ads_options的完整设计,那么提供更多规格会更容易IFIC建议

而且未成年人的注意,如果opt_id是数字那么你就不在查询中需要使用单引号(')周围(所以把他们赶走例子)

编辑 类似于下面的东西将返回你的ID,类型的列表,然后根据第三场以逗号分隔值的列表,如果这是更多的帮助

$group_query = $db->query(" 
    SELECT 
     opt_id, opt_type, GROUP_CONCAT(opt_name) AS opt_names 
    FROM ads_options 
    WHERE opt_id = " . intval($data['ad_id']) . " 
    ORDER BY opt_type"); 

欲了解更多有关GROUP_CONCAT看看这个链接http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

我不知道如果PHP编程有某种解决这个问题,我倾向于所以如果有人这样做的一个PHP版本知道要使用的ColdFusion以下则似乎以匹配OP被要求

<cfoutput query="qryAdOptions" group="opt_type"> 
    #qryAdOptions.opt_type# 
    <cfoutput> 
     #qryAdOptions.opt_name# 
    </cfoutput> 
</cfoutput> 

http://bytes.com/topic/php/answers/11929-grouping-results-query#post50606似乎在暗示潜在下面的匹配上面贴的我,可能是有用的

$answer = array(); 
while ($row = pg_fetch_array($results)) { 
    if (!isset($answer[$row["obj_type"]])) { 
    $answer[$row["obj_type"]] = array(); 
    } 
    $answer[$row["obj_type"]][] = $row; 
} 

然后遍历$答案。这会很好地发挥

SELECT * FROM ads_options WHERE opt_id = ...... 
+0

谢谢西蒙..很多关于您的答案的信息,我很感激。 – kampit 2012-02-17 12:26:36

+1

NP,你的问题碰巧出现在我等待测试:) – 2012-02-17 12:28:38

+0

我做了什么.. http://pastebin.com/raw.php?i=h3VV9C0y – kampit 2012-02-17 12:53:03

相关问题