php - 行和表的关系 - mySQL

标签 php mysql sql

我正在开发一个 PHP + MySQL 项目,需要知道如何进行 SQL 查询。 下面是一张表格草图:

http://s24.postimg.org/na86w4do4/a_1.jpg

ms_diseases 表存储疾病名称。 ms_characteristics 存储可能来自某种疾病的特征。 ms_diseases_characteristics 表交叉了疾病和特征之间的关系

这是一个例子:

http://s21.postimg.org/sg1f7kfti/b_1.jpg

“偏头痛”疾病 (ms_diseases) 在 ms_diseases_characteristics 表中具有相关的数字 1 和 2 特征。

现在的问题是: 我如何使用值 1 和 2 进行查询,仅返回具有 1 和 2 特征的疾病?那在特定情况下是“偏头痛”吗?

示例:

Characteristics – 1, 2 – return -> MIGRAINE
Characteristics – 1 – return > NOTHING
Characteristics – 1, 4, 5 – return > FLU
Characteristics – 1, 4 – return > NOTHING

如何查询返回具有此类特征的疾病?

最佳答案

SELECT disease_name
FROM
(
    SELECT  a.disease_name, c.totalCount
    FROM    ms_diseases a
            INNER JOIN ms_diseases_characteristics b
                ON  a.ID = b.disease_ID 
            INNER JOIN 
            (
                SELECT  disease_ID, COUNT(*) totalCount
                FROM    ms_diseases_characteristics
                GROUP   BY disease_ID
            ) c ON  b.disease_ID  = c.disease_ID 
    WHERE   b.characteristic_id IN (1,4,5)         -- <<== list of charateristics
    GROUP   BY a.disease_name                                       ^^
    HAVING  COUNT(*) = c.totalCount AND                             ^^
            COUNT(DISTINCT b.characteristic_id) = 3 -- << # of parameters
) s

关于php - 行和表的关系 - mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097504/

相关文章:

php - 添加动态输入并将数据插入MySQL

sql - PostgreSQL 在建表主键中添加

php - 由于 INT 值而调用 boolean 的成员函数 fetch()?

php - 在播放期间预加载音频并应用CSS

php - 从mysql数据库下载数据到php中的word文档

mysql - 如何解决 Cannot delete or update a parent row : a foreign key constraint fails in Spring

sql - 当我想消除重复记录时,Union all 和 union 应该使用哪一个?

php - 为什么我的单元测试通过 Hudson/Phing 失败,但通过命令行上的 Phing 成功?

php - 为第一个 JSON PHP 添加值

python - 如何使用 Python 将具有父/子(类别-子类别)层次结构的 csv 数据导入 MySQL