我有一个充满推文的数据库表,其中一列是“主题”。当我将推文存储在数据库中时,我检查是否存在特定关键字,无论推文匹配哪一个,主题都会设置为该词。
我要检查的关键字: bieber,很糟糕
鸣叫: OMG我喜欢比伯!
主题存储: bieber
我要检查的关键字: bieber,很糟糕
鸣叫:这个吸尘真的很糟糕!
主题存储:糟透了
在我的网站上,我列出了这些主题在Twitter上的“声音”份额。见下文:
这基本上是(主题的数量='KEYWORD HERE')/(数据库中的推文总数)。
条形图如下所示:
<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
?>
答案 0 :(得分:1)
你能做2个查询吗?
select subject, count(*) as numTweets from tweets group by subject;
select count(*) as totalTweets from tweets;