5

私はデータベースに比較的慣れていません。私はOracleを使用しており、このクエリを実装して、メンバーが行ったパーソナルトレーニングセッションの数を見つけようとしています。

テーブルは次のとおりです。

メンバー

MEMBERS_ID(NUMBER),
MEMBERSHIP_TYPE_CODE(VARCHAR),
ADDRESS_ID(NUMBER), CLUB_ID(NUMBER) 
MEMBER_NAME(VARCHAR), 
MEMBER_PHONE(VARCHAR), 
MEMBER_EMAIL(VARCHAR)

PERSONAL_TRAINING_SESSIONS

SESSION_ID(VARHCAR), 
MEMBER_ID (NUMBER), 
STAFF_ID(VARCHAR), 
SESSION_DATETIME(DATE)

私のクエリはこのエラーを繰り返しています:

ORA-00979:GROUPBY式ではありません00997。00000-"GROUPBY式ではありません"*原因:
*アクション:行でのエラー:1列:8

SELECT MEMBERS.MEMBER_ID,MEMBERS.MEMBER_NAME, COUNT(personal_training_sessions.session_id)
FROM MEMBERS JOIN personal_training_sessions
ON personal_training_sessions.member_id=members.member_id
GROUP BY personal_training_sessions.session_id;

誰かが私を正しい方向に向けることができますか?周りを見回しましたが、カウントクエリを分離する必要がありますか?

4

2 に答える 2

6

エラーはそれをすべて言います、あなたはとによってグループ化されていませMEMBERS.MEMBER_IDMEMBERS.MEMBER_NAME

SELECT MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
     , COUNT(personal_training_sessions.session_id)
  FROM MEMBERS 
  JOIN personal_training_sessions
    ON personal_training_sessions.member_id = members.member_id
 GROUP BY MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME

メンバーごとの個人セッションの数が必要なので、メンバー情報でグループ化する必要があります。

基本的な(もちろん、はるかに複雑になる可能性があります)GROUP BY、SELECTクエリは次のとおりです。

SELECT <column 1>, <column n>
     , <aggregate function 1>, <aggregate function n>
  FROM <table_name>
 GROUP BY <column 1>, <column n>

集計関数は、Ken Whiteが言うようMIN()MAX()、、COUNT()などのようなものです。集計されていないすべての列でGROUPBYを実行します。

MEMBERSこれは、テーブルがで一意である場合にのみ意図したとおりに機能MEMBER_IDしますが、クエリに基づいて、そうであると思われます。私が何を意味するかを明確にするために、テーブルが一意でない場合は、あたりのセッション数ではなく、あたりおよびあたりのセッションMEMBER_ID数をカウントします。それらが1:1の関係にある場合、それは事実上同じことですが、1つに複数のsを持つことができる場合、そうではありません。MEMBER_IDMEMBER_ID MEMBER_NAMEMEMBER_NAMEMEMBER_ID

于 2012-12-19T23:10:46.940 に答える
2
SELECT MEMBERS.MEMBER_ID,
       MEMBERS.MEMBER_NAME, 
       COUNT(personal_training_sessions.session_id)

FROM MEMBERS JOIN personal_training_sessions
ON personal_training_sessions.member_id=members.member_id

GROUP BY personal_training_sessions.session_id;

COUNT関数を使用しているため、他の列MEMBER_IDおよびMEMBER_NAMEをgroupby句に含める必要があります。

于 2012-12-19T23:10:52.573 に答える