QA@IT
«質問へ戻る

syntax hilightの修正

5619
本文
 ユーザーと商品のテーブル(省略)、
 
 商品ジャンルテーブル、
-`genre
+```
+genre
 id   name
 1   家電
 2   3万円台
 3   テレビ
 4   黒
 5   SONY
-6   三菱`
+6   三菱
+```
 
 商品とジャンルのリレーションテーブル、
-`item_genre
+```
+item_genre
 item_id	genre_id
 1    1
 1    2
 2    1
 2    3
 2    4
-2    6`
+2    6
+```
 
 
 ユーザーが希望する商品ジャンルのテーブル(ユーザーとジャンルのリレーションテーブル)、
-`user_genre
+```
+user_genre
 user_id	genre_id
 1    1
 1    3
 3    1
 3    3
 3    4
-3    5`
+3    5
+```
 
 以上があるとします。
 

SQL文作成について知恵をお貸しください

ユーザーと商品のテーブル(省略)、

商品ジャンルテーブル、

genre
id   name
1   家電
2   3万円台
3   テレビ
4   黒
5   SONY
6   三菱

商品とジャンルのリレーションテーブル、

item_genre
item_id genre_id
1    1
1    2
1    3
2    1
2    3
2    4
2    6

ユーザーが希望する商品ジャンルのテーブル(ユーザーとジャンルのリレーションテーブル)、

user_genre
user_id genre_id
1    1
1    3
2    1
2    3
2    4
3    1
3    3
3    4
3    5

以上があるとします。

この時に商品側から(商品IDを元に)、その商品を希望しているユーザーIDを取得する場合の
SQL文の作成方法のご教示をお願いいたします。

上記のテーブルの例ですと、アイテム1から取得したいユーザーIDは1、アイテム2からは
ユーザーID 1と2を取得できればOKです。

商品が持つジャンルIDが1,2,3に対してユーザーが希望するジャンルIDが1,3のように少ない
場合は対象にふくまれますが、商品が持つジャンルIDが1,3に対してユーザーが希望する
ジャンルIDが1,3,4のように多くなる場合は対象に含めません。

色々と考えてみたのですが、頭がこんがらがってしまい迷宮に迷い込んでしまいました。
すみませんがお知恵をお貸しください。よろしくお願いします。

※DBサーバーがMySQLのため、MySQLで実現できる方法だとありがたいです。

ユーザーと商品のテーブル(省略)、

商品ジャンルテーブル、
```
genre
id   name
1   家電
2   3万円台
3   テレビ
4   黒
5   SONY
6   三菱
```

商品とジャンルのリレーションテーブル、
```
item_genre
item_id	genre_id
1    1
1    2
1    3
2    1
2    3
2    4
2    6
```


ユーザーが希望する商品ジャンルのテーブル(ユーザーとジャンルのリレーションテーブル)、
```
user_genre
user_id	genre_id
1    1
1    3
2    1
2    3
2    4
3    1
3    3
3    4
3    5
```

以上があるとします。

この時に商品側から(商品IDを元に)、その商品を希望しているユーザーIDを取得する場合の
SQL文の作成方法のご教示をお願いいたします。

上記のテーブルの例ですと、アイテム1から取得したいユーザーIDは1、アイテム2からは
ユーザーID 1と2を取得できればOKです。

商品が持つジャンルIDが1,2,3に対してユーザーが希望するジャンルIDが1,3のように少ない
場合は対象にふくまれますが、商品が持つジャンルIDが1,3に対してユーザーが希望する
ジャンルIDが1,3,4のように多くなる場合は対象に含めません。


色々と考えてみたのですが、頭がこんがらがってしまい迷宮に迷い込んでしまいました。
すみませんがお知恵をお貸しください。よろしくお願いします。

※DBサーバーがMySQLのため、MySQLで実現できる方法だとありがたいです。

質問を投稿

SQL文作成について知恵をお貸しください

ユーザーと商品のテーブル(省略)、

商品ジャンルテーブル、
genre
id   name
1   家電
2   3万円台
3   テレビ
4   黒
5   SONY
6   三菱

商品とジャンルのリレーションテーブル、
item_genre
item_id genre_id
1    1
1    2
1    3
2    1
2    3
2    4
2    6

ユーザーが希望する商品ジャンルのテーブル(ユーザーとジャンルのリレーションテーブル)、
user_genre
user_id genre_id
1    1
1    3
2    1
2    3
2    4
3    1
3    3
3    4
3    5

以上があるとします。

この時に商品側から(商品IDを元に)、その商品を希望しているユーザーIDを取得する場合の
SQL文の作成方法のご教示をお願いいたします。

上記のテーブルの例ですと、アイテム1から取得したいユーザーIDは1、アイテム2からは
ユーザーID 1と2を取得できればOKです。

商品が持つジャンルIDが1,2,3に対してユーザーが希望するジャンルIDが1,3のように少ない
場合は対象にふくまれますが、商品が持つジャンルIDが1,3に対してユーザーが希望する
ジャンルIDが1,3,4のように多くなる場合は対象に含めません。

色々と考えてみたのですが、頭がこんがらがってしまい迷宮に迷い込んでしまいました。
すみませんがお知恵をお貸しください。よろしくお願いします。

※DBサーバーがMySQLのため、MySQLで実現できる方法だとありがたいです。

ユーザーと商品のテーブル(省略)、

商品ジャンルテーブル、
`genre
id   name
1   家電
2   3万円台
3   テレビ
4   黒
5   SONY
6   三菱`

商品とジャンルのリレーションテーブル、
`item_genre
item_id	genre_id
1    1
1    2
1    3
2    1
2    3
2    4
2    6`


ユーザーが希望する商品ジャンルのテーブル(ユーザーとジャンルのリレーションテーブル)、
`user_genre
user_id	genre_id
1    1
1    3
2    1
2    3
2    4
3    1
3    3
3    4
3    5`

以上があるとします。

この時に商品側から(商品IDを元に)、その商品を希望しているユーザーIDを取得する場合の
SQL文の作成方法のご教示をお願いいたします。

上記のテーブルの例ですと、アイテム1から取得したいユーザーIDは1、アイテム2からは
ユーザーID 1と2を取得できればOKです。

商品が持つジャンルIDが1,2,3に対してユーザーが希望するジャンルIDが1,3のように少ない
場合は対象にふくまれますが、商品が持つジャンルIDが1,3に対してユーザーが希望する
ジャンルIDが1,3,4のように多くなる場合は対象に含めません。


色々と考えてみたのですが、頭がこんがらがってしまい迷宮に迷い込んでしまいました。
すみませんがお知恵をお貸しください。よろしくお願いします。

※DBサーバーがMySQLのため、MySQLで実現できる方法だとありがたいです。