3

わかりました、私はこれについておそらく間違った方法で進んでいると思いますが、私は非常に多くの異なるアイデアを試しましたが、これを行う正しい方法を見つけることができないようです.

基本的に、私は訪問者が私のウェブサイトにアクセスしたときに IP アドレスを記録し、どの IP アドレスがビジネスに属しているかを特定します。

表 1 には私の Web サイトを訪れた人の IP アドレスの長いリストがあり、表 2 には私が特定した IP アドレスのリストがあります。

今私がやろうとしているのは、表 1 の IP アドレスのうちいくつが特定されたかを調べることです。

以下のコードは、IP アドレスを照合してグループ化し、表 2 の IP アドレスが表 1 に何回出現するかを示しています。

しかし、私が取得しようとしているのは、数字のグループではなく、1 つの数字だけです。いくつかの方法でクエリを作成しようとしましたが、グループでしか機能しません。

SELECT ip_stats.ip, COUNT(ip_stats.ip) 
FROM ip_stats 
LEFT JOIN main USING (ip)
GROUP BY ip_stats.ip

ip_stats はテーブル 1 で、私の Web サイトを訪れた人の長いリストがあります。main は表 2 で、識別された IP アドレスの詳細が含まれています。

両方のテーブルには独自の主キーがあり、どちらも ID です。

ありがとう

4

1 に答える 1

2

COUNTテーブルのipmain

SELECT ip_stats.ip, COUNT(`main`.ip)
FROM ip_stats 
LEFT JOIN main USING (ip)
GROUP BY ip_stats.ip 

更新 1

ああ、それでip、メイン テーブルに存在するすべての値に対して 1 つの値だけが必要ですか? その場合、これを使用する必要はありませんLEFT JOIN。代わりに使用しますINNER JOIN

SELECT COUNT(DISTINCT ip_stats.ip)
FROM ip_stats 
     INNER JOIN main USING (ip) 

DISTINCTが追加されたため、一意の値のみがカウントされます。

于 2012-09-24T00:32:24.257 に答える