データが正規化されていません。具体的には、Subscriber_Fileの1行には、1つのエントリがMasterGenre 1とMaterGenre 2の両方にrealtedされているという2つの事実があります.3つのMaterGenresに関連していた場合はどうなりますか?もし10?あなたの事実を関連付けるために要求されたコードは、管理不能な混乱に急速に拡大します。
標準ソリューションは、リレーショナルデータベースシステムを使用しているときに、データを正規化して、各「繰り返す事実」をテーブル内の1つの行で表します。 (Googleの「データベースの正規化」とあなたは本当にテーマに関する記事の数千人を見つけることができます。)ここで、あなたが終わるかもしれない:
Table Subscriber
SubscriberId
FileName
(01, TestFile.pdf)
Table Genre
GenreId
GenreName
(1, Test1)
(2, Test2)
Table SubscriberGenre
SubscriberId
GenreId
(01, 1)
(01, 2)
れる些細なbecomseデータを照会ポイント:
SELECT sub.SubscribeId, gen.GenreId, sub.FileName, gen.GenreName
From Subscriber sub
Inner join SubscriberGenre subgen
On subgen.SubscriberId = sub.SubscriberId
Inner join Gener gen
On gen.GenreId = subgen.GenreId
結果を生成する必要があり
これは
(01, 1, TestFile.pdf, Test1)
(01, 2, TestFile.pdf, Test2)
うーんを設定し、あなたはまだ、「1,2」の値を1に、これらの2つの行を変換して挑戦しています。私は誰かにそれに答えるようにします。私の主なポイントは、正規化されたテーブル構造がなければ、何かをするのに問題があるということです。
Oracle、SQL Server、PostgreSQL、MySQL、Access、SQLite?あなたは回答者を助けるためにあなたの質問にもっと力を入れなければなりません。 –
たとえば、sybase:P –
@DhruvalDave:(Subscriber_FileでGenreIdを使用しているように)単一の行の1つのフィールドに複数の値を格納すると、First Normal Formに違反します。可能な限り避けるべきです。 –