【问题标题】:how to retrieve no of comment? [closed]如何检索没有评论? [关闭]
【发布时间】:2013-01-10 03:58:04
【问题描述】:
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

如何从评论表示例中检索 cmets 的编号,John 已登录。它应该检索 2。

到目前为止,我有这个 SQL 语句:

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

【问题讨论】:

  • 什么是 DDL? (描述表格)
  • 从评论中选择计数(*)
  • 不清楚表与其他表的关系。
  • 我认为您需要重新考虑表格的组织方式。您不应该在单个字段中存储诸如“夹克、衬衫”之类的值。它使您当前的任务变得更加困难。
  • 您能否至少说明它们之间的关系?

标签: mysql sql select count


【解决方案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'

【讨论】:

    【解决方案2】:

    试试这个:

    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';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      相关资源
      最近更新 更多