0

3 つの異なるカテゴリの 3 つの列を持つ PRODUCTS という名前のテーブルがあり、3 つの列のいずれかに 3 つの値のいずれかを持つすべての製品を選択したいと考えています。私がやろうとしているのは、3 つのカテゴリのいずれかに基づいて関連製品を表示することです。

表の例:

ID、名前、猫1、猫2、猫3

1,キーボード,2,8,4
2,マウス,2,NULL,NULL
3,モニター,16,2,NULL

ITEM id=1 を表示しているとします。クエリを実行して、3 つの列のいずれかにカテゴリ番号 2 を持つ他の 2 つの製品を表示したいと考えています。

それ、どうやったら出来るの?

どうもありがとう、アンドレス

4

2 に答える 2

2
SELECT * FROM table_name WHERE id != 1 AND (cat1 = 2 OR cat2 = 2 OR cat3 = 2)
于 2012-06-06T19:42:57.680 に答える
1

では、任意の ID について、選択したカテゴリと同じカテゴリを持つ他の「兄弟」をそのカテゴリで見つけますか?


製品 p1、製品 p2、製品 p3
から、p1.cat
= p2.cat
および
p1.cat = p3.cat
// および
p1.id != p2.id p1.id
!= p3.id p2.id
!= p3.id
などの他のさまざまな修飾。それ
join products p3 on p3.cat = p1.cat

ところで、これはパフォーマンス的には悪い考えです。SQLではなくプログラムで行うのが最善です。このようなカーソルっぽいクエリを扱うときはいつでも、SQLではなくコードで配列を使用してください。

于 2012-06-06T19:44:44.883 に答える