同じテーブルの他の列の値の組み合わせと一致する列の値を選択します

アラア

各広告の詳細をプロパティ/値スタイルで保存するためにAds呼び出されるテーブルと別のテーブルAdDetailsがあります。ダミーコードを使用した簡略化された例を次に示します。

[AdDetailID], [AdID], [PropertyName], [PropertyValue]
 2            28      Color           Red
 3            28      Speed           100
 4            27      Color           Red
 5            28      Fuel            Petrol  
 6            27      Speed           70

AdsPropertyNameとPropertyValueの多くの組み合わせに一致するものを選択する方法。例:

where PropertyName='Color' and PropertyValue='Red'
And
where PropertyName='Speed' and CAST(PropertyValue AS INT) > 60
Jブルックス

あなたはおそらくこのようなことをたくさんするつもりなので、私はすべてのプロパティを単一の行に折りたたむビューを作成することから始めます。

create view vDetail
as
select AdID,
max(case PropertyName 
when 'Color' then PropertyValue end) as Color,
cast(max(case PropertyName 
when 'Speed' then PropertyValue end) as Int) as Speed,
max(case PropertyName 
when 'Fuel' then PropertyValue end) as Fuel
from AdDetails
group by AdID

このアプローチは、Speedをintにキャストする際の問題も解決します。

それなら私が select * from vDetails

ここに画像の説明を入力してください

これにより、親テーブルに結合されたときに簡単に処理できます。可変数の「一致」が必要だとおっしゃいましたが、以下のwhere句に注意してください。@MatchesNeededは、nullではなかった変数の数のカウントになります。

        select *
        from Ads a
        inner join vDetails v
        on a.AdID = v.AdID
        where case when v.Color = @Color then 1 else 0 end +
          case when v.Spead > @Speed then 1 else 0 end +
          case when v.Fuel = @Fuel then 1 else 0 end = @MatchesNeeded

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じ列で値が異なる2つのテーブルを組み合わせて、一致しないテーブルのみを返します

分類Dev

同じテーブル内の別の値と一致する行から値を選択します

分類Dev

オブジェクトの配列を組み合わせ、同じ値のキーを組み合わせ、一意の値を維持します

分類Dev

一致する列と一致しない列の組み合わせに基づいて行を選択します

分類Dev

mySQL-2つのテーブルを1つの同じ列値と組み合わせて、開始日と終了日を比較します

分類Dev

列の組み合わせが値のリストと一致する行を選択するにはどうすればよいですか?

分類Dev

sql列の組み合わせに一致するIDを選択します

分類Dev

角度のあるマテリアルは、テーブル内の同じ列の値を組み合わせ、複数の行に対して単一の値のみを表示します

分類Dev

一致した列値と他のデータフレームの組み合わせに基づいて行パンダをドロップします

分類Dev

左結合し、右のテーブルからのみ一致する列を選択しました

分類Dev

同じテーブル内の他の列を組み合わせた列でCREATETABLEを実行することはできますか?

分類Dev

SQLServerの条件を持つ同じテーブルの値の組み合わせを検索します

分類Dev

MSSQL-列の値が指定されたすべての値と一致する多対多のテーブルからデータを選択します

分類Dev

Mysql:特定の他の列値を指定して2つの列値の組み合わせが一意である行を選択する方法

分類Dev

列の値が数字と文字の組み合わせである行を選択します

分類Dev

コンテンツと一致する場合、別のテーブルから列を選択します

分類Dev

同じテーブル内の他の複数の列の結果を組み合わせて列を更新します

分類Dev

同じテーブルの列値を選択して、テーブルの列値を更新します

分類Dev

SQL異なるテーブルの列値と一致する列値を持つ行を選択します

分類Dev

MYSQL:組み合わせに一致するテーブルからすべての行を選択し、その逆

分類Dev

SQLの単一の列内の値のすべての可能な組み合わせでテーブルの列を更新します

分類Dev

2つのテーブルから不一致の列値を選択します

分類Dev

条件が一致する場合にのみ列の値を選択します

分類Dev

R:列の値が他のファイルの値と一致する場合に行を出力します

分類Dev

列の一意の組み合わせを選択する

分類Dev

値の1つにNULLフィールドがある場合にのみ、テーブルでGROUP_BYとGROUP_CONCATの同じ値を選択します

分類Dev

異なる列に同じ組み合わせの値が存在する場合は、行を削除します

分類Dev

MYSQL:複数の値が1つの列に少なくとも2回一致するテーブルからIDを選択します

分類Dev

同じ名前の列を組み合わせて複数のテーブルを結合する方法

Related 関連記事

  1. 1

    同じ列で値が異なる2つのテーブルを組み合わせて、一致しないテーブルのみを返します

  2. 2

    同じテーブル内の別の値と一致する行から値を選択します

  3. 3

    オブジェクトの配列を組み合わせ、同じ値のキーを組み合わせ、一意の値を維持します

  4. 4

    一致する列と一致しない列の組み合わせに基づいて行を選択します

  5. 5

    mySQL-2つのテーブルを1つの同じ列値と組み合わせて、開始日と終了日を比較します

  6. 6

    列の組み合わせが値のリストと一致する行を選択するにはどうすればよいですか?

  7. 7

    sql列の組み合わせに一致するIDを選択します

  8. 8

    角度のあるマテリアルは、テーブル内の同じ列の値を組み合わせ、複数の行に対して単一の値のみを表示します

  9. 9

    一致した列値と他のデータフレームの組み合わせに基づいて行パンダをドロップします

  10. 10

    左結合し、右のテーブルからのみ一致する列を選択しました

  11. 11

    同じテーブル内の他の列を組み合わせた列でCREATETABLEを実行することはできますか?

  12. 12

    SQLServerの条件を持つ同じテーブルの値の組み合わせを検索します

  13. 13

    MSSQL-列の値が指定されたすべての値と一致する多対多のテーブルからデータを選択します

  14. 14

    Mysql:特定の他の列値を指定して2つの列値の組み合わせが一意である行を選択する方法

  15. 15

    列の値が数字と文字の組み合わせである行を選択します

  16. 16

    コンテンツと一致する場合、別のテーブルから列を選択します

  17. 17

    同じテーブル内の他の複数の列の結果を組み合わせて列を更新します

  18. 18

    同じテーブルの列値を選択して、テーブルの列値を更新します

  19. 19

    SQL異なるテーブルの列値と一致する列値を持つ行を選択します

  20. 20

    MYSQL:組み合わせに一致するテーブルからすべての行を選択し、その逆

  21. 21

    SQLの単一の列内の値のすべての可能な組み合わせでテーブルの列を更新します

  22. 22

    2つのテーブルから不一致の列値を選択します

  23. 23

    条件が一致する場合にのみ列の値を選択します

  24. 24

    R:列の値が他のファイルの値と一致する場合に行を出力します

  25. 25

    列の一意の組み合わせを選択する

  26. 26

    値の1つにNULLフィールドがある場合にのみ、テーブルでGROUP_BYとGROUP_CONCATの同じ値を選択します

  27. 27

    異なる列に同じ組み合わせの値が存在する場合は、行を削除します

  28. 28

    MYSQL:複数の値が1つの列に少なくとも2回一致するテーブルからIDを選択します

  29. 29

    同じ名前の列を組み合わせて複数のテーブルを結合する方法

ホットタグ

アーカイブ