• ベストアンサー

複数のテーブルのレコードをカウントする方法

2つのテーブルのレコード数をカウントする方法を教えてください。 $sql = "SELECT * FROM テーブル1 and テーブル2"; $res = mysql_query($sql,$myLink); $num_k = mysql_num_rows($res); こんな感じでカウントできるかと思ったのですが出来ませんでした。 宜しくお願い致します。

  • melll
  • お礼率50% (114/227)
  • MySQL
  • 回答数2
  • ありがとう数2

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

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

ああ、ごめんなさい、中途半端なソースさらしてしまいましたね $sql = "select sum(c1) as c2 from (select count(*) as c1 from テーブル1 union all select count(*) from テーブル2 ) as sub"; $res = mysql_query($sql,$myLink); $rows = mysql_fetch_array($res,MYSQL_ASSOC); print $rows["c2"]; みたいな感じです。 ただし、いまはmysql_query()は使わないように指導されています。 別の方法を試した方がよいでしょう。 もしなにか参考にしている書籍があるならそれは古いのでもう少し 新しいものを用意した方がいいかもしれません。

melll
質問者

お礼

ご丁寧にソースまで書いて頂きましてありがとうございます。 >いまはmysql_query()は使わないように指導されています。 ご指摘の通り10年近く前の本を見ています。 新しい参考書を購入したいと思います。 ありがとうございました。

その他の回答 (1)

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

select sum(c1) as c2 from (select count(*) as c1 from kudamono union all select count(*) from member ) as sub みたいなかんじで

melll
質問者

お礼

ありがとうございます。 色々と試してみたのですが、理解できませんでした...>_<

関連するQ&A

  • 大阪府(25件)みたいなカウントをするには?

    データベースサイトによくある 大阪府(25件) 奈良県(11件) 三重県(18件) のような、それぞれのカウントをしたいのですが 重くて、表示に大変時間がかかります。 PHPで $query = " SELECT `field` FROM `table` WHERE `field` = $seach "; //実行 $num_sql = mysql_query($query); //件数取得 $num_rows = mysql_num_rows($num_sql); のような、クエリを、項目数分まわしてるのですが、 このやり方だと重くなるみたいです。 なにかもっと軽く動作させるやり方があれば アドバイスお願いします。 データは約二万件、カウントさせたい項目数は57あります。

    • ベストアンサー
    • MySQL
  • MySQLのテーブルのデータ数のカウントの仕方

    PHPとMySQLで、クエリーのselectを使わないで、 テーブル「test_T」の総データ数をカウントすることはできるのでしょうか。 ちなみに、 select * from test_Tをしてから、 mysql_num_rows()とすれば結果セットの行数はでるのですが、 selectで全データを出力するのはサーバに高負荷がかかる気がします。 select * の負荷は、データが多いと、やはりかかるのでしょうか。 以上、2点、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • テーブルのレコード数を取得したいのですが、返り値が1になってしまいます。

    最近MySQLやPHPを触り始めたものです。マニュアルを参考に、テーブルのレコード数を取得しようとしてみたのですが、返り値が1になってしまいます。なぜこのような結果になるのでしょうか? http://jp.php.net/manual/ja/function.mysql-num-rows.php : : $db = mysql_connect($db_host,$db_user,$db_password); mysql_select_db($db_name,$db); $count = mysql_query("select count(*) from $db_table", $db); $num_rows = mysql_num_rows($count); echo "<p>{$num_rows}</p>"; どこに問題があるのかわかりません……。初歩的なミスをしているのだと思うのですが、数時間このままの状態で困っています。

    • ベストアンサー
    • PHP
  • phpのリストボックスについて

    よろしくお願いします。 phpを利用し、条件にあった内容を表示させる画面を作っています。 リストボックスで選択した内容を次のリストボックスの選択キーとして 別テーブルの検索条件に利用できるものでしょうか?? 以下のソースなんですが、 //------------------------------------------------------------- ソースA: print "<select name='brand' id='brand' style='width:190'>"; $sql ="select * from brand ORDER by no"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['name']}' >{$rec['name']}</option>"; } } print "</select>"; //-------------------------------------------------------------- とbrandテーブルからnameをリストボックス表示させます。 この表示し、選択した内容(仮にダイヤ)を同画面にあるもう一つの リストボックスで同じようなソースで別テーブルをselect文の検索キーに したいのです。以下のような感じ・・ //------------------------------------------------------------- ソースB: $sql ="select * from item where = 'ダイヤ'"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['itemname']}' >{$rec['itemname']}</option>"; } } print "</select>"; //-------------------------------------------------------------- の$sql ="select * from item where = 'ダイヤ'";←このダイヤを ソースAからもってきたいのですが、何かよい方法はありますか? 変数作ってやってみましたが、うまくいかずです。phpだけでは無理でしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • mysql_query等でレコード数を変数に格納

    mysql> SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) ; で +------+ | rows | +------+ | 9 | +------+ と出すことができます。 この rows の数「9」を php の変数に入れたいのです。 <?php // DB接続省略 $sql = "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' )" ; $result = mysql_query($sql, $conn); var_dump($sql."<br />"); echo ($result."--result"."<br/>"); $rows= mysql_num_rows($result); echo ($rows."--rows"."<br/>"); ?> として、ブラウザで確認すると string(80) "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) " Resource id #3--result 1--rows となって、 $rows に値’9’が入りません。$rows にレコード数を取得させるには、どうすれば良いでしょうか?

    • ベストアンサー
    • PHP
  • mysql_num_rowを繰り返したい

    ラジオボタン選択肢アンケートのデータをMySQLのテーブルに入れて、 mysql_num_row()で各選択肢の件数を抽出したいのですが。 選択肢は1~5の数値(int型)でanテーブルに入っています。 for ($i = 1; $ <= 5; $++) { $rst = mysql_query("SELECT * FROM an WHERE field=$i", $con); $kotae.$i = mysql_num_row($rst); } このように書くと 1の選択肢の数しか返してきません。しかも、件数が間違って返ってくる。  文法が間違っているからだと思うのですが。上記のようなことをやりたいのです。  forを使わないでやると、 $rst = mysql_query("SELECT * FROM an WHERE field=1",$con); $kotae1 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=2",$con); $kotae2 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=3",$con); $kotae3 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=4",$con); $kotae4 = mysql_num_rows($rst); $rst = mysql_query("SELECT * FROM an WHERE field=5",$con); $kotae5 = mysql_num_rows($rst); です。  forを使って楽にやりたい場合はどうすればよいでしょうか 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQLに同じデータがあるかどうか確認する方法

    掲示板でスパム投稿を排除するために、同じ投稿内容は投稿できないようにしたいと思っています。 データはMySQLにありまして、bbsというテーブル名でpostdataというフィールド名を利用しています。 $sql = "select * from bbs where postdata = '$postdata'"; $res = db_query($sql, $conn); $rows = mysql_num_rows($res); if ($rows > 0) { exit; } 投稿する前にDBをチェックして同じ投稿だったらexitするようにしているつもりですが、同じ投稿内容なのにチェックされずに投稿されてしまいます。 何がいけないのでしょうか?postdata = '$postdata'" 日本語の文字列をチェックするのは無理があるのでしょうか。

    • ベストアンサー
    • PHP
  • php5+Mysql5による条件検索とその表示方法が上手く動作しないのでどなたかご指摘をお願いします。

    phpにて条件検索を行っているのですが、『where』以下を$変数にすると動かなくなってしまいます。記述部分で何が間違っているのでしょうか? 以下記述↓ <? $link = db_con(); //←DB接続 $sql = "select * from tbl where id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ を下記のように『where』以下を$変数にして代入 $変数した場合↓ <? $where .= "id = '" . mysql_real_escape_string( $_GET['id'] ) . "' and name like '%" . mysql_real_escape_string( $_GET['name'] ) . "%' "; $link = db_con(); //←DB接続 $sql = "select * from tbl where $where "; $result = mysql_query( $sql ) ; $num_rows = mysql_num_rows( $result ); ?> ここまで↑ どなたかご指摘をお願いします。

  • 2つのテーブルからレコードを抽出する方法

    お世話になります。MySQLに関する質問です。 TABLE1とTABLE2の2つのテーブルからレコードを抽出する際、 TABLE1からは全項目のデータを取得し、TABLE2からは一部の項目の データを取得したいと考えています。 条件は、TABLE1とTABLE2を[No]という項目の値で紐(ひも)づけます。 (1) SELECT * FROM TABLE1 (2) SELECT COL_A, COL_B, COL_C FROM TABLE2 上記(1)(2)のレコードを1つのSQLで取得する方法について、どなたかご教授願えますか?

    • ベストアンサー
    • MySQL
  • VB2010のSQLを使ったレコードカウント方法

    VB2010にて他のシステムから出力したCSVファイルにアクセスして集計を行おうとしています。 重複を排除したカウントを得たいのですがうまくいきません。 (1) SQL = "SELECT DISTINCT 物品ID FROM …" だと目的のレコードを抽出できるのですがCOUNTを使って (2) SQL = "SELECT COUNT(DISTINCT 物品ID) AS 物品数 FROM …" とする『演算子がありません』とエラーが出て (3) SQL = "SELECT DISTINCT COUNT(物品ID) AS 物品数 FROM …" とすると値はですのですが(1)のレコード数と違う数が出てきます??? 素人の手探りでプログラミングをしているので動きの違いが分かりません ご教授お願いします。