2017-06-20 6 views
-2
select title, Forename AS "Firstname", Surname AS "Lastname", COUNT 
(VISIT.Vet_Id) AS "Visits" 
from VISIT, VET 
where VISIT.Vet_Id = VET.Vet_Id 
group by title, Surname,VISIT.VET_Id 
order by title, Surname, VISIT.VET_Id; 

上記のコードを実行すると、エラーメッセージが表示されます。FORnameを "Firstname"Oracleエラーメッセージ:別の 'Select'句を追加するときにGROUP BY式ではない

どうしてですか?

select title, Forename AS "Firstname", Surname AS "Lastname", 
     COUNT(vi.Vet_Id) AS "Visits" 
from VISIT vi join 
    VET v 
    on vi.Vet_Id = v.Vet_Id 
group by title, Forename, Surname 
order by title, Forename, Surname; 

そして、FROM句の決して使用コンマ:

+1

検索を試しましたか?このトピックに関する多くの質問と回答があります。 – Aleksej

+0

'group by'に' Forename'を追加する必要があります。 'group by'が指定されている場合、選択されたすべての属性は' group by'または集合体のいずれかでなければなりません。 – HoneyBadger

答えて

0

ちょうどGROUP BYSELECT内の非集計列を含めます。 常には、適切で明示的なJOIN構文を使用します。また、すべての列参照を修飾する必要があります。

0

Oracleデータベースの場合、Select句で取ったGroup by句の非集約フィールドをすべて追加する必要があります。それ以外の場合はエラーになります。 mysqlの場合、group by節にはそのような制限はありません。

+1

これは「制限」ではありません。 MySQLは単にランダムな結果を返すだけです(新しいバージョンもそのようなクエリを正当に拒否します) –

関連する問題