0

ツイートでいっぱいのデータベーステーブルがあり、列の1つが「件名」です。ツイートをデータベースに保存するとき、特定のキーワードの存在を確認し、ツイートが一致するものはどれでも、件名はその単語に設定されます。

私がチェックしているキーワード:ビーバー、吸う

ツイート: OMGビーバーが大好き!

保存された件名:ビーバー


私がチェックしているキーワード:ビーバー、吸う

ツイート:この真空は本当によく吸います!

保存された件名:吸う

私のサイトでは、これらの主題によるTwitterの「声」のシェアをリストアップしています。下記参照:

ここに画像の説明を入力してください

これは基本的に(件名='KEYWORD HERE'のツイートの数)/(データベース内のツイートの総数)になります

棒グラフは次のようになります。

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

私はこれを達成するための最良のSQLステートメントとPHPではありません。私はそれを総当たり攻撃して個々のキーワードを調べることができますが、データベースにそれほど多くの呼び出しをしたくありません...無駄に思えます。

合計数を取得してから、1つの大きなクエリで各キーワードの数を取得できますか?配列か何かとして戻ってくるように?

悪い試み:

<?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 に答える