は、私はこれらの3つのクエリがあります。これら3つのSQLクエリをOracleでどのように結合する必要がありますか?
SELECT
title, year, MovieGenres(m.mid) genres,
MovieDirectors(m.mid) directors, MovieWriters(m.mid) writers,
synopsis, poster_url
FROM movies m
WHERE m.mid = 1;
SELECT AVG(rating) FROM movie_ratings WHERE mid = 1;
SELECT COUNT(rating) FROM movie_ratings WHERE mid = 1;
をそして私は、単一のクエリにそれらを結合する必要があります。私はこのようにそれを行うことができました:
SELECT
title, year, MovieGenres(m.mid) genres,
MovieDirectors(m.mid) directors, MovieWriters(m.mid) writers,
synopsis, poster_url, AVG(rating) average, COUNT(rating) count
FROM movies m INNER JOIN movie_ratings mr
ON m.mid = mr.mid
WHERE m.mid = 1
GROUP BY
title, year, MovieGenres(m.mid), MovieDirectors(m.mid),
MovieWriters(m.mid), synopsis, poster_url;
しかし、私は実際には「巨大な」GROUP BY、それを行うための簡単な方法があることを好きではないのですか?
あなたの個人的な好みによって「きちんとした」コードをプログラムするのは馬鹿です。あなたが言うとき、 "私は実際に"巨大な "グループを好きではありません。あなたはプロフェッショナルではないとは思えません。私はこれを何とか意味すると言っていません。まず、それはどの標準によっても巨大ではありません。それは非常に普通のサイズのグループです。第二に、それはそれです。あなたは次のことを行うクエリを書くべきです。 1.スケール。データベースアクティビティの拡張性が必要です。 2.維持可能。クエリは、構文と形式の標準を満たしている必要があります。 –
UDFを削除することを強くお勧めします。 SQLの外観をきれいにするかもしれませんが、スケーラビリティとパフォーマンスが損なわれます。 Tom Kyteのルール1は、あなたができることができるSQLのすべてを行います...あなたがSQLでそれを行うことができないとき、PL/SQLでそれをします。ディレクターと作家がちょうど他のリレーショナル・テーブルであれば、それらすべてに参加してください。彼らがSOAコールなのなら、それを残しておいてください。 –
私が意味することは、それは私には意味をなさないということです。より良い方法が必要です。私は、フィールドの束を選択しなければならない場合(私が使用できる*)、すべてをGROUP BYに入れなければならないという意味で、私には意味がありません。 Oracle SQLを使用していて、おそらく私が後にしていることを実行するためのより良い方法があるかもしれません。それがSOのためのものです、そうですか? –