【问题标题】:mysql join result if only have all features如果只有所有功能,则mysql加入结果
【发布时间】:2014-05-14 13:53:17
【问题描述】:

我有一个包含所有功能的复选框。用户选择一些特征。 如何列出所有选择了所有功能的人。

person
- id
- name

features 
- id
- name

person_feature
- person_fk
- feature_fk

例如仅具有特征 1,5 和 9 的人 不是具有特征 1 的人和具有特征 5 的人...只能同时具有此特征

【问题讨论】:

  • 请分享当前的查询,看看你走了多远,或者你是从哪里开始的,哪里需要帮助。否则,这就像您要求 SO 社区做作业一样。

标签: mysql sql mariadb


【解决方案1】:

确认... 仅提供所提供的内容,或至少提供的内容。例如:如果用户想要功能 1、5、9 但有些人有

(1, 2, 5, 8, 9), 
(1, 5, 6, 7, 9), 
(1, 5, 9, 12)... 

这些都可以,因为它们具有您要查找的 1、5 和 9 的最小值。

select
      pf.person_fk,
      p.name
   from
      person_feature pf
         join person p
            on pf.person_fk = p.id
   group by
      pf.person_fk,
      p.name
   having 
      sum( case when pf.feature_fk in ( 1, 5, 9 ) then 1 else 0 end ) >= 3

如果您只想要正好 3 的那些,只需将 >= 更改为 =

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多