2010-12-06 4 views
1

タイトルが紛らわしい場合はお詫び申し上げます。本質的には、階層の最下位に個々の項目を持つカテゴリ、グループ、コレクションなどの階層テーブルのセットがあります。sub_itemsが存在する場合、カテゴリを返すSQLクエリAND sub_itemsがカテゴリ外に存在する場合は 'other name'

全体的に見ると、カテゴリ>グループ化>コレクション>アイテムのようなものがあります。ただし、一部のアイテムはコレクションの一部ではありません。私が必要とするのは、与えられた検索語に対してCollection内に少なくとも1つのItemが存在する場合はCollectionの詳細を返し、CategoryやGrouping内に項目が存在していない場合は 'Other'(フラグ値など)を返します。 Collection(外部キー 'collection_id'はこの場合はnullになります)。

私が達成しようとしている結果のようなものです:

Collection Name 1 
    Item 
    Item 
    ... 
Collection Name 2 
    Item 
    Item 
    ... 
Collection Name X 
    Item 
    ... 
Other Items 
    Item 
    Item 
    ... 

が、それは1つのクエリでこれを行うために(十分な、簡単な)ことは可能ですか?

+3

部分的なテーブル構造はありますか?階層的なデータを実装するには、さまざまな方法があります。 – NotMe

+0

残念ながら、私は私の前に構造を持っていない - 私はそれが信じるものを投稿するつもりだったが、私は明日まで正確さを確かめることができない。これはシンプルな階層構造ですが、各テーブルはPKを持ち、FKはFKの階層構造の上位3つのテーブルにリンクしている項目を除いて、構造のすぐ下にあるテーブルにFKします。回答がない場合、私は明日の朝に構造サンプルをOPに更新します。 – thor

答えて

0

これはあなたの指示どおりにデータをフォーマットするわけではありませんが、SELECT CASE WHEN CollectionID IS NULL THEN 'Other Items' ELSE CollectionName END, ItemNameの行に沿った何かがこのトリックを行うようです。私は主にSQL Serverのユーザーですが、それはかなり標準的なSQLだと思います。

関連する問題