如何在MySQL中加入相同的数据库名称?

时间:2012-02-17 09:27:03

标签: mysql

基本上我while两次获得主要组&团体价值。实施例

$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 个答案:

答案 0 :(得分: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的完整设计,那么提供更具体的建议会更容易

同样是次要注释,如果opt_id是数字,那么您在查询中不需要单引号(')(在示例中将其删除)

修改 类似下面的内容会返回一个id,type的列表,然后作为第三个字段返回一个以逗号分隔的值列表,如果有更多的帮助

$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是否以编程方式提供了一些帮助,我倾向于使用Coldfusion,所以如果有人知道执行以下操作的PHP版本,那么这似乎与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;
}

然后迭代$ answer。

可以很好地发挥作用
SELECT * FROM ads_options WHERE opt_id = ......