1
items table(the users will select and store into mysql

itemID | name   | item 
1      | Mary   | pants, jeans
2      | John   | jacket, shirt
3      | Jack   | jacket, shirt

description table 

descID | item         
1      | jacket, shirt
2      | pants, jeans  
3      | dress, jeans 

comment table (retrieve the no of comments made)
commentId| item          | comment
1        | jacket        | great
2        | jacket        | nice
3        | jeans         | comfortable

ジョンがログインしたコメント テーブルの例からコメント数を取得するにはどうすればよいですか。2 を取得する必要があります。

これまでのところ、次の SQL ステートメントがあります。

SELECT DISTINCT(COUNT(comment)) AS comment
FROM comment co
INNER JOIN item i
WHERE co.item = i.item; 
4

2 に答える 2

1

テキスト文字列ではなく、外部キーを使用してテーブルを関連付ける必要があります。答えは、テーブルのデザインを修正することです。

ユーザーとアイテムの間に多対多の関係が必要なようです。これには、多対多の関連付けを格納する別のテーブルが必要です。

ユーザー:

ID     | name
1      | Mary
2      | John
3      | Jack

項目:

ID     | description         
1      | jacket
2      | pants  
3      | dress
4      | shirt
5      | jeans

UserItemAssoc:

UserID | ItemID
1      | 2
1      | 5
2      | 1
2      | 4
3      | 1
3      | 4

コメント:

ID       | itemID        | comment
1        | 1             | great
2        | 1             | nice
3        | 5             | comfortable

クエリは次のようになります。

select count(distinct c.ID) from 
Users as u JOIN UserItemAssoc as uaa on (u.id = uaa.userID)
JOIN Items as i on (i.ID = uaa.itemID)
JOIN Comments as c on (c.itemID = i.ID)
WHERE u.Name = 'John'
于 2013-01-10T05:41:58.097 に答える
0

これを試して:

SELECT COUNT(DISTINCT c.comment) AS commentCount 
FROM comment c 
INNER JOIN item i ON FIND_IN_SET(c.item, i.item) 
WHERE i.name = 'John';
于 2013-01-10T05:20:56.650 に答える