2016-09-29 13 views
0

私は自分のDVDコレクション用のSQLiteテーブルを構築しました。私は冒険、アニメーション、バイオグラフィー、クリスマス、コメディ、犯罪、...、西洋の値を持つフィールド 'ジャンル'を持っています。 'Genre'フィールドはint型で、整数の各ビットは24個のジャンルのうちの1つを表します。たとえば、ビット4が設定されている場合、DVDはコメディです。私はそのジャンルに基づいてテーブルのサブセットを取得できるようにしたい。たとえば、私はこれを試しました:ビット操作ですか?

SELECT * FROM AV WHERE GENRE & 1 <<4> 0 ORDER BY Title 

すべてのコメディを取得します。奇妙なことに、SQL文はOKを実行しましたが、期待される結果は実行しませんでした。

私はVarCharとしてジャンルを保存することができますが、ジャンルとしてビットを整数で保存することで機能させたいと思います。

+0

なぜこのようにしますか?アドベンチャー映画は「1」、アニメーションは「2」などというだけではないのですか?それはあなたが何か想像してやることのためにそれをどのように格納しているかというと、何か気が利いているようにしようとしているように思えますが、ストア/クエリの頭痛のように聞こえるでしょう。 – Siyual

+3

正規化されたデータモデルに切り替えることを検討してください:-)そのトリックは、必要でない時間の99%です。 –

+1

ビットフラグを使用してプレイしようとしていることに感謝しますが、少なくともサンプルデータを投稿できますか?これらのテーブルはどのようなものになりますか?どのような結果が得られますか? – WillardSolutions

答えて

0

悪いSQLステートメントは正しく機能します。私は2つのジャンルを追加してから、アルファベット順にジャンルを分類してビットの位置を変更しました。混乱させて申し訳ありません。 アール・ステーリー