2017-03-03 8 views
-1

私はSQLでプロジェクトの作業者の量を取得しようとしていますが、クエリの一部のグループには何らかのエラーがあります。私は、プロジェクトのIDとそれに取り組んでいる労働者とを照合するsepareteテーブル(workersonprojects)を持っています。クエリでは、1つのプロジェクトですべての人数+人数を選択する必要があります。なぜ「GROUP BYでない」というエラーが表示されますか?

SELECT projectid, name, developerleader, consultantleader, projectleader, budget, count(workerid) AS workers 
FROM projects 
JOIN workersonprojects on (projectid=project) 
JOIN workers on (worker=workerid) 
GROUP BY projectid; 
+0

selectでカラムを使用できるのは、Statementまたは集計関数のグループ – Jens

+0

projectidにあるものだけです。 GROUP BYに伝える必要があります。 projects.projectid – hurricane

+1

一般的なGROUP BYルールは次のように言います:GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を特定するか、または集合関数の引数でなければなりません! – jarlh

答えて

2

クエリGROUP BY projectid;からわかるように、選択リストにあるすべての列をgroup by句に含めるわけではありません。 (PROJECTIDにworkersonprojectsを登録しよう のプロジェクトからの労働者 AS

SELECT PROJECTID、名前、developerleader、consultantleader、projectleader、予算、(workerid)カウント:あなたは他の回答によると

SELECT p.projectid, 
name, 
developerleader, 
consultantleader, 
projectleader, 
budget, 
xxx.workers 
FROM projects p 
JOIN workersonprojects wp on p.projectid= wp.project 
JOIN workers w on p.worker= w.workerid 
JOIN (select projectid, count(workerid) AS workers 
FROM projects 
GROUP BY projectid) xxx ON p.projectid = xxx.projectid; 
0

集計関数:COUNT()を使用しています。 COUNT()以外のすべての列でグループ化する必要があります。

0

のようなあなたのクエリを変更する必要があります= PROJECTID、名前、developerleader、consultantleader、projectleader、クエリによってグループで予算

0

BYプロジェクト) は(労働者= workerid上の労働者のJOIN) GROUPあなたはテーブルヨーヨーの 'PROJECTID' を定義する必要がありますほしい。

SELECT workersonprojects.projectid, projects.name, 
projects.developerleader, projects.consultantleader, projects.projectleader, 
projects.budget, 
count(workersonprojects.workerid) AS workers 
FROM projects 
JOIN workersonprojects on 
(workersonprojects.projectid=projects.projectid) 
JOIN workers on (workers.worker=workersonprojects.workerid) 
GROUP BY workersonprojects.projectid; 
0

基本的にGroup BY句の場合、集計関数内で使用されていないGroup by句のすべての列を含める必要があります。ここでは、projectid、name、developerleader、consultantleader、projectleader、budgetカラムを選択しましたが、COUNT()関数には1つのカラムしかありません。したがって、SELECT句にこれらの列を含めてください。

SELECT projectid, 
    name, 
    developerleader, 
    consultantleader, 
    projectleader, 
    budget, 
    COUNT(workerid) AS workers 
FROM projects 
JOIN workersonprojects 
ON (projectid=project) 
JOIN workers 
ON (worker=workerid) 
GROUP BY PROJECTID, 
    name, 
    developerleader, 
    consultantleader, 
    projectleader, 
    budget; 
0

select文のすべての属性をグループ化する必要があります。select文で選択するすべての属性を指定する必要があります。

関連する問題