程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了mysqli_num_rows 在 2 个表上具有左连接 更新大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决mysqli_num_rows 在 2 个表上具有左连接 更新?

开发过程中遇到mysqli_num_rows 在 2 个表上具有左连接 更新的问题如何解决?下面主要结合日常开发的经验,给出你关于mysqli_num_rows 在 2 个表上具有左连接 更新的解决方法建议,希望对你解决mysqli_num_rows 在 2 个表上具有左连接 更新有所启发或帮助;

我有 2 个表,“艺术家”和“歌曲”。当我在网站上打开它时,我需要一个类别中的多个艺术家。

这为我提供了“房子”类别中的所有歌曲。

$query = MysqLi_query($_connect,'SELECT `cat` 
    FROM `songs` 
    WHERE `cat` = "house"');
$result = MysqLi_num_rows($query);
echo $result; //ok

现在我测试了这个以显示该类别中的所有艺术家。 “(pass) 在两个表中具有相同的编号,用于使用 USING”

$query = MysqLi_query($_connect,'SELECT `artist` 
    FROM `artists` 
    left JOIN `songs` USING (pass) 
    WHERE `cat` = "house"');
$result = MysqLi_num_rows($query);
echo $result; //fail

输出是歌曲的数量,但我需要“房子”类别中的艺术家数量。如何获取所选类别中的艺术家数量?

解决方法

假设的数据库结构

我将假设 pass 是一个唯一标识符,相当于 artist.id

artists             songs
    id                  id
    artist              song
    pass                pass
                        cat

SQL

有几种方法可以做到这一点,具体取决于您想要什么。但是,它的核心是您需要使用 GROUP BY 将结果限制为一位艺术家

修改原始查询

这将为您提供 artist 列中唯一值的结果集。然后您可以使用 mysqli_* 函数。

SELECT artist FROM artists
LEFT JOIN songs USING (pass)
WHERE cat = "HOUSE"
GROUP BY artist;

使用 SQL 返回 COUNT

这将返回计数作为结果集。

SELECT COUNT(*) as numberOfArtists
FROM (
    SELECT COUNT(*) FROM songs
    WHERE cat="HOUSE"
    GROUP BY pass
    ) as query

更新

回来再看一遍,并在评论中添加更多细节您可以优化查询:

艺术家数量

返回包含一列的结果集:在 HOUSE 类别中拥有歌曲的艺术家数量。

SELECT COUNT(DISTINCT pass) as count FROM songs WHERE cat="HOUSE";

歌曲和艺术家数量

返回包含两列的结果集:HOUSE 类别中歌曲的艺术家数为 artistsHOUSE 类别中的歌曲数为 {{1} }.

songs

大佬总结

以上是大佬教程为你收集整理的mysqli_num_rows 在 2 个表上具有左连接 更新全部内容,希望文章能够帮你解决mysqli_num_rows 在 2 个表上具有左连接 更新所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: