douzhan1031 2012-06-16 21:39
浏览 46
已采纳

(嵌套的MySQL语句)是否可以使用一个SQL查询实现? 有什么改进?

Is it possible to implement with one SQL query? Any improvements?

$query = mysql_query("SELECT id, name FROM fruits WHERE `group`=''");

if ($query) {
    while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
        echo $row['name'];

        $query2   = mysql_query("SELECT name FROM fruits WHERE `group`='{$row['id']}'");

        if (mysql_num_rows($query2)) {
            echo ':';

            while ($row2 = mysql_fetch_array($query2, MYSQL_ASSOC)) {
                echo ' '. $row2['name'] . ',';
            }
            mysql_free_result($query2);

            echo '<br>';
        }
    }
    mysql_free_result($query);
}

Result:

Berries: blueberry, raspberry, strawberry,
Citrus: grapefruit, lime,
Pear

Database structure SELECT * FROM fruits:

id   | group | name
-------------------------
03E7 |       | Berries
0618 | 03E7  | blueberry
051B | 03E7  | raspberry
02AA | 03E7  | strawberry
035F |       | Citrus
07A5 | 035F  | grapefruit
0633 | 035F  | lime
05E1 |       | Pear
  • 写回答

2条回答 默认 最新

  • dsvf46980 2012-07-08 15:25
    关注

    Fully working example:

    <?php
    
    header("Content-Type: text/plain");
    
    $con = mysql_connect("localhost", "root", "");
    mysql_select_db("test");
    
    $query = mysql_query("SELECT a.name as `group`, GROUP_CONCAT(b.name ORDER BY b.name SEPARATOR ', ') as name FROM fruits a LEFT JOIN fruits b ON b.`group` = a.id WHERE a.`group` = '' GROUP BY a.name");
    
    if ($query) {
        while ($row = mysql_fetch_array($query)) {
            $group = $row['group'];
            $name  = $row['name'];
    
            if (isset($name)) {
                echo $group . ': ' . $name . "
    ";
            } else  {
                echo $group . "
    ";
            }
        }
        mysql_free_result($query);
    }
    mysql_close($con);
    
    ?>
    

    Result:

    Berries: blueberry, raspberry, strawberry
    Citrus: grapefruit, lime
    Pear
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题