2

これが可能かどうか、またはピボット テーブルのカテゴリに該当するかどうかはよくわかりませんが、プロのところに行って確認することにしました。

Card、Property、および CardProperty という 3 つの基本テーブルがあります。カードには同じプロパティがなく、多くの場合、同じプロパティに対して複数の値があるため、カード テーブルに非常に大きな列構造を持たせる代わりに、ユニオン テーブル アプローチを使用してデータを格納することにしました。

プロパティ テーブルは、基本的なキーワード/値型テーブルです。したがって、キーワード ATK とそれに割り当てられた値があります。「Sycnro」や「DARK」など、カードが複数の値を持つことができる SpecialType と呼ばれる別のプロパティがあります。

私がやりたいのは、カード ID、カード名、および指定されたカードの ResultSet 内の列としてカードに割り当てられたすべてのプロパティ キーワードとその値を提供するビューまたはストアド プロシージャを作成することです。したがって、理想的には、次のような結果セットが必要です。

ID  NAME                   SPECIALTYPE
1   Red Dragon Archfiend   Synchro
1   Red Dragon Archfiend   DARK
1   Red Dragon Archfiend   Effect

そのようにして結果を集計することができました。

キーワードに基づいてプロパティを単純に連結することで、より洗練されたものになると思います。そのため、次のような ResultSet を生成できます。

1  Red Dragon Archfiend   Synchro/DARK/Effect

..しかし、それが実現可能かどうかはわかりません。

stackoverflow ケノービを助けて! あなたは私の唯一の希望です。

4

5 に答える 5

1

関連しているが、値は別々の列に保持されている値であり、「特殊なタイプ」を事前に知っている:
月ごとの製品売上を比較するSQLクエリ

それ以外の場合は、ストアドプロシージャのカーソルを使用してこれを行うか、ビジネス層またはプレゼンテーション層で変換を実行します。

すべてのケースを知っている場合は、SQLを突き刺してください。

Select
    ID,NAME
    ,Synchro+DARK+Effect --  add a some substring logic to trim any trailing /'s
from
    (select
        ID
        ,NAME
        --may need to replace max() with min().
        ,MAX(CASE SPECIALTYPE WHEN "Synchro" THEN SPECIALTYPE +"/" ELSE "" END) Synchro
        ,MAX(CASE SPECIALTYPE WHEN "DARK" THEN SPECIALTYPE +"/" ELSE "" END) DARK
        ,MAX(CASE SPECIALTYPE WHEN "Effect" THEN SPECIALTYPE ELSE "" END) Effect
    from
        table
    group by
       ID
       ,NAME) sub1
于 2008-08-20T15:48:57.577 に答える
1

これはSQLサーバー用ですか?

はいの場合

複数の行の値を 1 つの列に連結する (2000)
複数の行の値を 1 つの列に連結する (2005 以降)

于 2008-08-20T15:36:17.123 に答える
0

データベースに関連するレコードを保存するために、連結によって折りたたまないでください。正確にはベストプラクティスではありません。

あなたが説明しているのはピボットテーブルです。ピボット テーブルは難しいです。可能であれば、それらを避けることをお勧めします。

関連する行を読み込んでメモリ内で処理してみませんか? これを行うのに何ミリ秒も費やすつもりのようには思えません...

于 2008-08-20T15:34:04.307 に答える
0

私はプロパティ テーブルの型/形式を持っています。これにより、整数値を扱うときにキャスト/評価する方法を知ることができます。この問題に関係があるかどうかはわかりませんでした。

于 2008-08-20T17:29:19.927 に答える
0

1 つのオプションは、Properties に PropertyType を持たせることです。

table cards
integer ID | string name | ... (other properties common to all Cards)

table property_types
integer ID | string name | string format | ... (possibly validations)

table properties
integer ID | integer property_type_id | string name | string value
foreign key property_type_id references property_types.ID

table cards_properties
integer ID | integer card_id | integer property_id
foreign key card_id references cards.ID
foreign key property_id references propertiess.ID

そうすれば、新しいプロパティ値を設定するときに、その型で検証できます。1 つのタイプは、値の列挙を持つ「SpecialType」です。

于 2008-08-20T15:39:05.620 に答える