0

我有一个充满推文的数据库表,其中一列是“主题”。当我将推文存储在数据库中时,我会检查是否存在特定的关键字,无论推文匹配哪个,主题都会设置为该词。

我正在检查的关键词:比伯,糟透了

推文:天哪,我爱比伯!

存储主题:比伯


我正在检查的关键词:比伯,糟透了

推特:这个真空吸尘器真的很烂!

存储主题:糟透了

在我的网站上,我列出了这些主题在 Twitter 上“声音”的份额。见下文:

在此处输入图像描述

这本质上是(number of tweets with subject = 'KEYWORD HERE') / (total tweets in database)

条形图如下所示:

<div class="barChart" data-value="2" data-title="eCircle"></div>

我不是完成此任务的最佳 SQL 语句和 PHP。我可以暴力破解它并遍历每个单独的关键字,但我不想对我的数据库进行那么多调用......似乎很浪费。

我可以取回总计数,然后是一个大查询中每个关键字的计数吗?就像它作为数组或其他东西回来一样?

错误尝试:

<?php
    include 'php/Connect.php';
    $totalTweets = 0;
    
    $ct = new Connect();
    $con = $ct->connect();
    $sql_query = 
        "SELECT COUNT(*) FROM tweets";
    $res = mysql_query($sql_query, $con);
    
    if (!$con | !$res) {
        echo "Problems connecting...";
    }
    
    else {
        mysql_close($con);
        while($row = mysql_fetch_assoc($res)) {
            $totalTweets = $row['count(*)'];
        }
    }
    
    $sql_query = 
        "SELECT COUNT(*), subject FROM tweets
            WHERE subject = 'KEYWORD HERE'";
    $res = mysql_query($sql_query, $con);
    
    if (!$con | !$res) {
        echo "Problems connecting...";
    }
    
    else {
        mysql_close($con);
        while($row = mysql_fetch_assoc($res)) {
            $firstKeyword = $row['subject'];
            $firstKeywordCount = $row['count(*)'];
        }
    }
    
    echo("<div class='barChart' data-value='".($firstKeywordCount/$totalTweets*100)."' data-title='$firstKeyword'></div>");
    
    // CONTINUE THIS UNTIL ALL KEYWORDS/SUBJECTS HAVE BEEN DONE
?>
4

1 回答 1

1

你能做2个查询吗?

select subject, count(*) as numTweets from tweets group by subject;
select count(*) as totalTweets from tweets;
于 2013-03-06T18:59:22.993 回答