重複を除くカウントの取得方法

このQ&Aのポイント
  • 重複を除いたカウント数を取得する方法について説明します。
  • ユーザー個別の広告番号を使用し、同一人物の重複を除いてクリック回数をカウントします。
  • PHPのコード例を使用して、重複を除いたカウント数を表示する方法を解説します。
回答を見る
  • ベストアンサー

重複を除くカウントの取得方法

御晩です。 ----------------- <?php //カウント $id= "$k_id"; $id = mb_convert_encoding($k_id,"EUC-JP","SJIS"); $id_count = $DB->getone("SELECT count(*) FROM ".$k_koukoku_log_table." ".$k_koukoku_inp_table." where a_num =$k_id"); ?> カウント数は<?=$id_count?>です。 ----------------- 上記は重複もカウントされてしまいます。 ユーザー個々に広告番号があり($k_id)、その広告番号をクリックされた回数を同一人物(重複)を除いてのカウントを表示したいと思っています。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

人物のフィールド名はなに?かりにpersonだとすると SELECT COUNT(DISTINCT person) FROM ・・・ とします

iinnffoo
質問者

お礼

有り難う御座います! こんばんは! 早速試してみます!

iinnffoo
質問者

補足

無事出ました! バッチリでした! 感謝いたしまふ!

関連するQ&A

  • 取得値の複数使用

    $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { $id = mb_convert_encoding($row['id'] , "SJIS", "EUC"); $name = mb_convert_encoding($row['name'], "SJIS", "EUC"); echo $id.":".$name; } 一度DBより取得した値 $resultの中身を複数回使用したいのですが・・・。 毎回、DBにアクセスしないとダメですか?

    • 締切済み
    • PHP
  • アクセスで重複のカウント

    アクセスで重複排除後のカウントを行いたいのですが・・。例えば、TEST1テーブルのaaaカラムの重複排除後のカウントを知りたい場合、一般的には、SELECT COUNT(DISTINCT aaa) FROM TEST1となると思いますが、アクセスではどのような記述ができるのでしょうか?宜しくお願いします。

  • PHP+Postgres 「髙」が文字化け

    DB上に格納した文字列を取得し、PHPで出力すると、 「髙」(はしごだか)等、一部の文字が「□・」のような見た目に化けてしまいます。 環境は以下です。 Linux(CentOS 5) PHP 5.1.6 Apache 2.2.3 PostgreSQL 8.4.3 文字コードは以下です。 Postgres:EUC-JP PHPソース:EUC php.ini の[mbstring]はコメントのまま変更していません。 文字コードの変換を試してみたのですが、「髙」としては出力できませんでした。 Windows上では「CP51932」に変換すると正常に出力できましたが、Linux上ではやはり駄目でした。 mb_language("uni"); mb_internal_encoding("euc-jp"); mb_http_input("auto"); mb_http_output("euc-jp"); $str = "髙橋"; print(mb_convert_encoding($str, "EUCJP-win")); print(mb_convert_encoding($str, "EUCJP-win","EUC-JP")); print(mb_convert_encoding($str, "SJIS")); print(mb_convert_encoding($str, "SJIS","EUC-JP")); print(mb_convert_encoding($str, "SJIS-win")); print(mb_convert_encoding($str, "SJIS-win","EUC-JP")); print(mb_convert_encoding($str, "UTF-8")); print(mb_convert_encoding($str, "UTF-8","EUC-JP")); print(mb_convert_encoding($str, "EUC","SJIS")); print(mb_convert_encoding($str, "Unicode")); print(mb_convert_encoding($str, "Unicode","EUC-JP")); print(mb_convert_encoding($str, "UTF-8", "sjis-win")); print(mb_convert_encoding($str, "CP51932")); print(mb_convert_encoding($str, "MS932")); print(mb_convert_encoding($str, "MS932","EUC-JP")); print(mb_convert_encoding($str, "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win" ), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win","EUC-JP"), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "EUCJP-win","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "EUCJP-win","SJIS-win")); http://blog.livedoor.jp/loopus/archives/50160285.html 上記サイトによると、解決法は「EUC-JPで出力しないこと」という事でしたが、 文字コードを変換して出力できるような事を書いているサイトもあり、結論が出せずにいます。 ソースを書き換えるのは避けたいのですが、いい方法がありましたらご教示ください。

    • ベストアンサー
    • PHP
  • php+mysql 重複した値を消す?

    初めての投稿です。初心者なのでうまく表現できないのですが、よろしくお願いします。カテゴリーが mysql だったらすみません。 さて、mysqlからデータを呼び出します。 1.テーブル名 net <フィールド名> cityname ff10 ff11 ff12 <データ1> sel 1000 1000 2000 <データ2> pus 1500 1500 1000 <データ3> tpe 3000 2000 2000 2.テーブル名 cityname <フィールド名> cityname kuni cityname2 houmen <データ1> sel 韓国 ソウル 7 <データ2> pus 韓国 プサン 7 <データ3> cju 韓国 チェジュ 7 <データ4> tpe 台湾 台北 7 ブラウザー上にあらわしたいこと 韓国 ソウル    プサン 台湾 台北      のように、重複する[韓国]をひとつだけにしたいのです。 下記コードの場合 韓国 ソウル 韓国 プサン 台湾 台北 となってしまいます。 $sql_houmen = "select kuni,cityname,cityname2 from cityname where houmen =7"; $sql_houmen = mb_convert_encoding($sql_houmen, "EUC-JP", "SJIS"); $result_houmen = mysql_query($sql_houmen); while($rec_houmen = mysql_fetch_array( $result_houmen, MYSQL_ASSOC )) {// foreach ($rec_houmen as $k=>$v) {// $rec_houmen[$k] = mb_convert_encoding($v,'SJIS','EUC-JP'); }// //$fsdateにデータがあるか確認 $sql_crr = "select crr,cityname from {$fsdate} where cityname like '%$rec_houmen[cityname]%' and cls='y' and crr = '{$crr}'"; $sql_crr = mb_convert_encoding($sql_crr, "EUC-JP", "SJIS"); $result_crr = mysql_query($sql_crr); if (mysql_num_rows($result_crr) > 0) {// echo "$rec_houmen[kuni]$rec_houmen[cityname2]"; }// }

    • ベストアンサー
    • PHP
  • MYSQLで重複せずにカウント上位から取得したい

    お世話になります。 MYSQLにて以下のようなtableがあるとします。 id ex_id name count flag time memo 1 1 山田 100 on 10:11 テスト 2 1 山田 80 on 10:12 テスト2 3 2 田中 50 on 10:13 テスト3 4 3 鈴木 30 on 10:14 テスト4 5 3 鈴木 110 on 10:14 テスト5 6 3 鈴木 10 on 10:14 テスト6 このうち、countの数字が高いものから表示したいのですが、 ex_idが重複する場合はその数字が最も高いもののみ表示したく考えています。 目的とした表示結果順は以下です。 id ex_id name count flag time memo 5 3 鈴木 110 on 10:14 テスト5 1 1 山田 100 on 10:11 テスト 3 2 田中 50 on 10:13 テスト3 distinctやgroup byなど色々考えてみたのですが、思ったような挙動になりませんでした。 以上、よろしくお願い致します。

  • SJIS→EUCに送っても文字化けしない

    htmlは、SJISで作っています。 PHPは、EUCで作っています。 普通は文字化けをするため、mb_convert_encoding関数を用いますが、 なぜか、この関数を使わなくても、文字化けしません。 友人は、有り得ないと言います。 事実、友人PCではmb_convert_encoding関数で文字化けを直してました。 私も友人に同感で、SJIS→SJISやEUC→EUCなら文字化けしないけど、文字コードが違うのです。違うから、mb_convert_encoding関数を使うと、思っているのですが‥‥ 設定が違うのかと思い、友人の、php.iniなどいくつかのファイルを私のPCに上書きしてもらいましたが、変わりませんでした。 こういうことってあるのでしょうか? 文字化けしないなら、mb_convert_encoding関数を使わなくて良いので、楽だと思いましたが・・・ 何かの不具合なら、いざ完成した時、またmb_convert_encoding関数をいれる手間がありますし、どうしようか迷っています。 本には、「文字化けしない場合もある」という記述は一言も書いてありませんでした。 逆に、「文字化けするからmb_convert_encoding関数を用いる」と大きく書いてあるぐらいです。 何かの設定なのでしょうか? ソフトのバージョンも、同じでした。不思議です。

    • ベストアンサー
    • PHP
  • mb_send_mailの2重投稿を防止したい

    初めて質問させていただきます。 動作環境はPHP4.3.0になります。 <? $to = "test@test.com"; $subject = "テスト"; $addheader = "From: $_POST[mail]\n"; $msg = "*************"; $to = mb_convert_encoding($to, "SJIS", "EUC-JP"); $subject = mb_convert_encoding($subject, "SJIS", "EUC-JP"); $msg = mb_convert_encoding($msg, "SJIS", "EUC-JP"); $addheader = mb_convert_encoding($addheader, "SJIS", "EUC-JP"); mb_language("Ja"); mb_internal_encoding("SJIS"); mb_send_mail($to, $subject, $msg, $addheader); setcookie("formdata", $posted , time()-1200); }; ?> 上記の用に記述をして、メールが届くのは確認をしたのですがなぜか9割位の確立でメールが二通届きます。 mb_send_mailの前後にecho分で文字を表示させたのですが、ループしている気配もありません。 どなたかこの現象を回避できる方法をお知りでしたらご教授下さい。 何卒、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Shift-JISからUTF-8への変換が出来ません

    初歩的な質問で申し訳ありませんが、大変困っております。ただいまimagettftext()を使って日本語主力したく悪戦苦闘しております。  ページ自体はShift-JISで制作していますのでimagettftext()で日本語を出力する場合はUTF-8へ変換して出力するところまでは知れべていて分かりました。しかしいざmb_convert_encoding()で変換しようとするとなぜかUTF-8へ変換されません。 $str = mb_convert_encoding($str,"UTF-8","SJIS"); print mb_detect_encoding($str);  結果→SJIS しかしこれがEUC-JPなら変換されます。 $str = mb_convert_encoding($str,"EUC-JP","SJIS"); print mb_detect_encoding($str);  結果→EUC-JP なぜなのか原因が分からなく困っております。 どなたかご教授願いませんでしょうか? よろしくお願い致します。

    • 締切済み
    • PHP
  • SQLの重複選択について

    こんばんわ 以下のカードテーブルから、重複しているカードidの個数をカウントし、そのカウント分だけ、ほかの重複カードテーブルにもっていきたいです。以下のように重複してない'11111100'以外をもっていく。 処理の手順としては、以下のようになります。 1.カードテーブルの重複しているカードの個数をカウントする。   今回は、'11111200'が2つ、'11111300'が3つで、計5個。   もしくは、重複しているカードだけ抽出する。 2.1の5個を引数にして、重複カードテーブルに5レコード分   代入する。 カードテーブル カードid 名前 期限 11111100 yano 2006/10 11111200 sano 2006/10 11111200 mayu 2006/10 11111300 saka 2006/10 11111300 koi 2006/10 11111300 mai 2006/10     ↓ 重複カードテーブル 11111200 sano 2006/10 11111200 mayu 2006/10 11111300 saka 2006/10 11111300 koi 2006/10 11111300 mai 2006/10

  • PHPの文字化け回避方法

    PHPとDB(MySQL)を使用したアプリケーションを作成しています。 しかし特定の文字(表や能など)をDBに入力し再度PHPで表示すると文字化けします。 調べて対策を行いましたが改善されません。 (対策) DBに格納する前にデータをすべてmb_convert_encoding($goo, "EUC-JP", "SJIS");でエンコード 読み込む際にはmb_convert_encoding($goo, "SJIS", "EUC-JP")と戻す。 又、magic_quotes_gpcもoffに。 しかしながら一向に改善されません。どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP