1

私はPHPの初心者で、データベースについてあまり知りません。以下のようなユーザーテーブルが 1 つあります。

------------------------------------------------------------------------
userid|firstname|lastname|password|Emailaddress|gender|agegroup|location
------------------------------------------------------------------------
      |         |        |        |            |       |       |
      |         |        |        |            |       |       |

gender特定の列の値を取得しagegrouplocationカウントしたい。単一のクエリを実行すると、必要に応じてデータが返されません。

$query="SELECT AgeGroupId as agegroupid,
        count(AgeGroupId) as agegroupcount,
        GENDER as gender,
        count(GENDER) as gendercount,
        Location as location,
        count(Location) as locationcount 
        FROM userprofile 
        GROUP BY AgeGroupId, GENDER, Location";

そして、3 つの異なるクエリを実行すると、いくらか必要な結果が得られます。

$query1="SELECT GENDER as gender,
         count(GENDER) as gendercount 
         FROM userprofile 
         GROUP BY GENDER";
$query2="SELECT AgeGroupId as agegroupid,
         count(AgeGroupId) as agegroupcount 
         FROM userprofile 
         GROUP BY AgeGroupId";
$query3="SELECT Location as location,
         count(Location) as locationcount 
         FROM userprofile 
         GROUP BY Location";

したがって、3 つのクエリを実行すると、必要な書式設定されたデータが取得され、単一のクエリを実行する場合は、PHP を使用して書式設定する必要があります。では、どちらが良いでしょうか?1 つのクエリを実行して PHP でデータを処理し、書式設定されたデータを取得するか、3 つのクエリを実行して書式設定されたデータを取得しますか?

4

2 に答える 2

0

3 つのクエリを使用する場合、DB に 3 つのリクエストを送信することになり、1 つのリクエストに対しては時間がかかる可能性があります。また、テーブルのサイズが大きくなると、さらに時間がかかる場合があります。PHP でデータをフォーマットする方が適切ですが、クエリが読みにくくなる可能性があります。

于 2012-06-22T14:59:32.513 に答える
0

3-in-1 クエリ:

SELECT *

FROM
 (SELECT GENDER as gender,
   COUNT(GENDER) as gendercount 
  FROM userprofile 
  GROUP BY GENDER) AS by_gender

INNER JOIN 
 (SELECT AgeGroupId as agegroupid,
   COUNT(AgeGroupId) as agegroupcount 
  FROM userprofile 
  GROUP BY AgeGroupId) AS by_age

INNER JOIN 
 (SELECT Location as location,
   COUNT(Location) as locationcount 
  FROM userprofile 
  GROUP BY Location) AS by_loc
于 2012-06-22T15:15:09.437 に答える