2014-05-14 72 views
0

我有一個包含所有功能的複選框。用戶選擇一些功能。 我該怎麼做才能列出所有人選的所有功能。如果只有所有功能,mysql連接結果

person 
- id 
- name 

features 
- id 
- name 

person_feature 
- person_fk 
- feature_fk 

例如只具有功能1,5和9 與地圖1人用功能5人......只有這個功能在同一時間

+0

請分享當前查詢,看你走多遠,或者哪種方式你開始吧,在哪裏呢它需要幫助。否則,像你這樣的接縫要求SO社區做你的功課。 – rekaszeru

回答

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,只是改變> =只是=