0

私は非常に基本的なことをしようとしていますが、これを完全に理解することはできません。MySQL ではなく、PHP と MySQLi (OOP) を使用しています。複数の単一選択ステートメントを使用して、各数値のカウントを変数に入れることもできますが、効率が悪いと思います。

テーブルがいくつかあります。

TABLE NAME: UCC_STAFF
id
email
username
password
status

TABLE NAME: UCC_TEMP_STAFF
id
email
username
password
status

TABLE NAME: UCC_TEMP_STUDENTS
id
email
username
password
status

TABLE NAME: UCC_VISITORS
id
email
username
password
status

私がやろうとしているのは、各テーブルの行数を数えることです。各行はユーザーを表します。私が説明したように; 1 つのテーブルで行うのは簡単ですが、複数のステートメントを複数の変数にするのではなく、単一のリクエストの結果を配列に結合したいと考えています。

望ましい結果の例は次のとおりです。

$a = results('UCC_STAFF' => '35',
            'UCC_TEMP_STAFF' => '12',
            'UCC_STUDENTS' => '543',
            'UCC_VISITORS'  => '6',);

これがどのように見えると私が想像するかは次のとおりです。

$db_host = "dbhost";
$db_username = "username"; 
$db_pass = "password";
$db_name = "dbname";

$mysqli = new mysqli("$db_host", "$db_username", "$db_pass", "$db_name");

if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$query  = "SELECT * FROM UCC_STAFF;";
$query .= "SELECT * FROM UCC_TEMP_STAFF;";
$query .= "SELECT * FROM UCC_STUDENTS;";
$query .= "SELECT * FROM UCC_VISITORS";

if ($mysqli->multi_query($query)) {

// Results into $results
// How do I do this, what goes here?    

    }

// Print Array
print_r ($results);
4

3 に答える 3

2

1 つのクエリで複数のテーブルからデータをカウントするには、そのようなことを行うことができます。

$query  = "SELECT ";
$query .= "(SELECT COUNT(*) FROM UCC_STAFF) AS count_staff, ";
$query .= "(SELECT COUNT(*) FROM UCC_TEMP_STAFF) AS count_temp_staff, ";
$query .= "(SELECT COUNT(*) FROM UCC_TEMP_STUDENTS) AS count_students, ";
$query .= "(SELECT COUNT(*) FROM UCC_VISITORS) AS count_visitors";
于 2013-02-02T19:43:51.977 に答える
1

1 つのテーブルを作成する

TABLE NAME: UCC_PEOPLE
id
email
username
password
status
type <-- use this field to distinguish different types

1 つのクエリを実行して、レコード自体ではなく、レコードの数を取得する

SELECT type, count(*) cnt, FROM UCC_PEOPLE GROUP BY type
于 2013-02-02T19:08:14.547 に答える
0

私はあなたがこのようなものを探していると思いますUNION

 $query  =(  (SELECT CONCAT('UCC_STAFF', '')as UCC_STAFF ,count(*)as count from UCC_STAFF )

              UNION ALL
              (SELECT CONCAT('UCC_TEMP_STAFF', '')as UCC_TEMP_STAFF ,count(*) from UCC_TEMP_STAFF )

              UNION ALL
              (SELECT CONCAT('UCC_TEMP_STUDENTS', '')as UCC_TEMP_STUDENTS ,count(*) from  UCC_TEMP_STUDENTS )

              UNION ALL
              (SELECT CONCAT('UCC_VISITORS', '')as UCC_VISITORS ,count(*) from UCC_VISITORS ) );

デモSQLFIDDLEはこちら

于 2013-02-02T19:44:28.630 に答える