【问题标题】:MySQL : writing query for relational tables for strict categoriesMySQL:为严格类别的关系表编写查询
【发布时间】:2013-09-16 08:53:49
【问题描述】:

我想写一个查询,只选择特定国家的问题,所以当我选择包含国家 1 和 2 的问题时,只显示有 2 个国家的问题,这些国家是 1 和 2。

我有 3 个表格 - questions, countries, questions_has_countries

  • 问题:id,问题
  • 国家/地区:ID、名称
  • questions_has_countries : questions_id, countries_id

我试过了:

SELECT q.question, q.id , c.id  
FROM questions as q, countries as c,  questions_has_countries as qhc
WHERE c.id = qhc.countries_id 
AND qhc.questions_id = q.id 
AND c.id IN (1,2) 
GROUP BY q.question
HAVING COUNT( qhc.countries_id ) = 2

当我使用第 5 行(AND c.id IN (1,2))时,我的计数器停止正常工作,因为它缩小了搜索范围。我知道我必须重写它,但我不知道如何。请帮忙。

【问题讨论】:

    标签: mysql database relational-database


    【解决方案1】:

    去掉WHERE子句,把HAVING子句改成

    HAVING  SUM(c.id IN (1,2)) = 2 AND
            COUNT(DISTINCT c.id) = 2
    

    【讨论】:

    • 而不是SUM(DISTINCT c.id) = 2 我想你的意思是COUNT(DISTINCT c.id) = 2 对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2017-03-15
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多