首页 > 解决方案 > 一次查询获取视频和类别

问题描述

我有 2 个数据表,分别是类别(类别表)和视频(视频表),如下图所示。我正在查询这张图片(Query mysqli test)以获取视频及其目录。有没有一种方法可以让我只使用一个查询,但结果仍与当前查询相同?

<?php
include('config.php');
$page=intval($_REQUEST['page']);
$limit=10;
$start=$page*$limit - $limit;
$video=mysqli_query($conn,"SELECT * FROM video ORDER BY video_id DESC LIMIT $start,$limit");
while($r_video=mysqli_fetch_assoc($video)){
    $cat_info=mysqli_query($conn,"SELECT * FROM category WHERE cat_id IN ({$r_video['video_cat']}) ORDER BY cat_sort ASC");
    while($r_cat=mysqli_fetch_assoc($cat_info)){
        $list_cat.='<a href="/category/'.$r_cat['cat_name'].'.html">'.$r_cat['cat_name'].'</a>,';
    }
    $list_cat=substr($list_cat, 0,-1);
    echo $r_video['video_name'].'<br>'.$list_cat;
    unset($list_cat);

}
?>

类别表

视频表

查询mysqli测试

标签: phpmysqlmysqli

解决方案


您可以像其他人所说的那样加入查询,您面临的问题可能与一个视频可能属于多个类别的事实有关。

在这种情况下,我会使用一个分析函数来根据需要格式化值。

我目前无法对此进行测试,但是查看文档,我建议您在加入后尝试使用 GROUP_CONCAT 或 CONCAT_WS,以便您可以以最佳方式对数据进行分组和返回。

只需抓住已经建议的查询,然后按照您想要的方式对它们进行分组,这样您就可以将函数应用于组并提取值。

希望能帮助到你。


推荐阅读