2

特定の URL がクリックされた回数に関する情報を保持する urltracker というテーブルが 1 つあります。このテーブルは、id、urlclicked、referrer、timestamp の 4 つの列で構成されています。urltracker は、URL がクリックされるたびにテーブルに別のエントリを作成します。

私がしたいのは、特定の URL とそれがクリックされた回数を表示することです。ユーザーはクリックして、この URL がクリックされた特定の回数をすべて明らかにすることで、データにドリルダウンできます。

私はSQLの専門家ではありませんが、最初にすべての個別のURLを表示し、その後にこの特定のURLのすべてのエントリを表示するサブクエリを表示する必要があるようです。

私はこれを考えるのが正しいですか、それとももっと簡単な方法がありますか?

4

4 に答える 4

3

そのような何かがトリックを行う必要があります:最初に:

SELECT urlclicked, 
       COUNT(*)
  FROM urltracker
GROUP BY urlclicked

そして、ユーザーがいくつかのURLをクリックすると:

SELECT id, 
       urlclicked, 
       referrer,
       timestamp
FROM urltracker
WHERE urlclicked = ?clickedUrl

詳細を表示します。

于 2008-12-18T11:37:21.947 に答える
2

考慮すべきことの1つは、2つのテーブルを使用することです。1つは一意のURLを保持し、もう1つはクリック情報を格納します(一意のシーケンス番号を使用してそれらを結合するか、URL(一意であるため))

しかし、クエリの質問に答えるために-はい、URLを表示するための1つのクエリと、特定のURLのデータを取得するための2番目のクエリがあります(ユーザーがその情報を要求した場合のみ)。

于 2008-12-18T11:36:23.727 に答える
0

各URLの合計を取得するには、次のようなことができるはずです。

SELECT urlclicked, COUNT(urlclicked) AS total
FROM urltracker
GROUP BY urlclicked

これはあなたが求めていたものですか?

于 2008-12-18T11:37:34.850 に答える
0

はい、ある意味で正しいです:

SELECT id, 
       tb1.urlclicked, 
       referrer,
       timestamp, tb2.totaltimesclicked
FROM urltracker as tb1
inner join 
(SELECT urlclicked, 
       COUNT(urlclicked) as totaltimesclicked
  FROM urltracker
GROUP BY urlclicked) as tb2
on tb1.urlclicked = tb2.urlclicked 

これにより、すべての情報が、各URLがクリックされた回数とともに表示されます。

于 2008-12-18T11:50:23.917 に答える