返回

mysql-PHP/SQL-只计算并显示特定列的唯一值?

发布时间:2022-05-19 09:50:10 283
# 数据库

基本上,我有以下代码和表格设置。(这是我正在制作的一个视频上传系统)。我有一个页面可以显示视频的 JUST 标签,然后您应该能够单击一个标签,它会搜索带有您单击的标签或多个标签的任何视频。

我遇到的问题:我的数据库是这样设置的(对于相关的部分:)列:tag1、tag2、tag3、tag4 行:每一行都有视频信息加上值(如果有,如果用户可能为 NULL选择 no t 以设置 tag1、tag2、tag3 和 tag4 的标签。

会有重复的。“video1”的行中可能有一个标签,tag1 (col) 中的值为“cat”,但“video2”的行中也可能有一个标签,tag3 (col) 中的值为“cat” )。

当我当前运行我的 SQL 查询时,如下所示的代码,如果列之间有重复,它将在标签列表中显示该重复标签两次。现在,在我的 SQL 查询中,我可以使用 DISTINCT 函数从单个列中忽略/删除重复的标签(假设 tag1 的列有 5 个不同的行,其值为“cat”,我可以忽略它并将其设置为显示/使用该值一次)。

我正在寻找的最终结果:

-- 在标签 1、标签 2、标签 3、标签 4 列之间获取任何/所有唯一结果,在页面上显示零重复,但在显示的每个唯一标签后面,我想要计算该值在所有标签之间出现的次数所有行中的列。像这样的例子:

猫:5 狗:8 鸟:2(等)

下面的代码目前给了我显示在页面上的结果(ps不要介意奇怪的命名标签。我只是在上传当前在网站上的视频时进行了测试):

猫测试idk测试测试kitty猫猫换油kitty猫kitty测试胡子龙测试

还包括数据库表的图片。 数据库表

代码:

<div class="tags-list">

<?php

$sql = "SELECT DISTINCT tag1, tag2, tag3, tag4 FROM videos;";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

    // Output of each row:

    while ($row = $result->fetch_assoc()) {

        // Define $row variables

        $tag1 = $row['tag1'];

        $tag2 = $row['tag2'];

        $tag3 = $row['tag3'];

        $tag4 = $row['tag4'];

        echo

        "<div class='list'>

            <a class='tags'>$tag1</a>

        </div>

        <div class='list'>

            <a class='tags'>$tag2</a>

        </div>

        <div class='list'>

            <a class='tags'>$tag3</a>

        </div>

        <div class='list'>

            <a class='tags'>$tag4</a>

        </div>

        ";

    }

} else {

    echo "No tags found :(";

    }

?>

</div>

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像