用語についてはよくわかりませんが、基本的には、次のように 2 つのテーブルを左に結合しています。
Snippets Table
snippet_id PK
snippet_text
snippets_link_email_id Table
snippet_id * (Links to Snippets Table)
email_id * (Links to emails Table)
emails Table
email_id
version_no
その他各種データ多数
つまり、ログが解析されて email テーブルに挿入され、各レコードにはログ テキストに関する詳細、検出されたエラー、およびユーザーに関するさまざまな情報が含まれています。
各ログから必要な主な情報はエラーです。各固有のエラーはスニペット テーブルに保存されます。
同じエラーのメールが多数ある可能性があるため、次のクエリを実行して、一意のエラーがいくつあったかを確認します。
$total_exception_check = mysql_query("SELECT * FROM snippets");
$total_exceptions = mysql_num_rows($total_exception_check);
while ($row = mysql_fetch_array($total_exception_check))
{
$i = $row['snippet_id'];
//Need to find total occurrences of this error
$feedback_query = mysql_query("SELECT * FROM snippets LEFT JOIN snippets_link_email_id ON snippets.snippet_id = snippets_link_email_id.snippet_id WHERE snippets_link_email_id.snippet_id = $i AND snippet_date BETWEEN CURRENT_TIMESTAMP - INTERVAL '$num_days' HOUR AND CURRENT_TIMESTAMP");
}
$tot_snippets = mysql_num_rows($feedback_query);
したがって、私は基本的に各固有のエラーをループしてから、snippets_link_email_id テーブルを検索して、そのエラーが記録された回数、つまり解析された電子メールにそのエラーがあった回数を確認します。
tot_snippets は、それぞれの合計金額を教えてくれます。これで、各エラーとそれが記録された回数の表を作成できるようになりました。
ただし、電子メール テーブルにはバージョン番号を含む多くの情報があります。電子メール テーブルの version_no の値が 2000 である一意のエラーの合計を取得したい場合はどうすればよいでしょうか。
それを確認するには、このコードをどのように編集すればよいでしょうか?
SELECT *
FROM snippets
LEFT JOIN snippets_link_email_id
ON snippets.snippet_id = snippets_link_email_id.snippet_id
WHERE
snippets_link_email_id.snippet_id = $i
AND snippet_date BETWEEN
CURRENT_TIMESTAMP - INTERVAL '$num_days' HOUR
AND CURRENT_TIMESTAMP
私は他の同様の投稿からこれを試しましたが、私は何マイルも離れていると推測しています:
SELECT *
FROM snippets, emails
LEFT JOIN snippets_link_email_id
ON snippets.snippet_id = snippets_link_email_id.snippet_id
AND snippets_link_email_id.email_id ON emails.email_id
WHERE snippets_link_email_id.snippet_id = $i
AND snippet_date BETWEEN
CURRENT_TIMESTAMP - INTERVAL '$num_days' HOUR AND CURRENT_TIMESTAMP