2014-02-23 25 views
1

我有一張表,其中存儲了一個人和他的愛好。我想打印(自動)愛好組合列表和只選擇這些愛好組合的人數總數。業餘愛好列表超過40個,所以我想列表自動生成。具有不同愛好組合的人員列表數自動找到組合

我的表看起來像這樣

A-h1 
A-h2 
A-h3 
B-h1 
B-h4 
C-h1 
C-h3 
D-h1 
D-h4 
E-h1 
E-h3

那就是:

A has hobbies h1,h2,h3 
B has hobbies h1,h4 
c has hobbies h1,h3 
D has hobbies h1,h4 
E has hobbies h1,h3

我的結果

h1,h2,h3- 1 
h1,h4 - 2 
h1,h3 - 2

請幫我找到答案

+0

因此,這是存儲爲每個人不同的記錄?像一排有A-h1,第二排有A-h2?需要更多的數據庫細節..你是否也嘗試過任何東西? –

+0

我也很好奇你的代碼,請分享它。 – LinkinTED

+0

雅一切都存儲在同一個表和不同的記錄@ICanHasCheezburger – praveenrsmart

回答

0

用途:

  • group_concat()生成每人
  • 愛好列表
  • 使用distinctorder bygroup_concat()保持一致形成
  • 使用外部查詢計算每個組合的頻率

試試這個組合:

select hobby_list, count(*) from (
    select group_concat(distinct hobby order by hobby) hobby_list 
    from hobbies 
    group by userid 
) x 
group by 1 
+0

@PraveenPrasannan老兄他寫了userid,你應該改變它到你的專欄'人' –

+0

@PraveenPrasannan我不得不猜測你的列名是。也許你應該告訴我們表名是什麼和列名。它會讓我們的生活變得如此簡單 – Bohemian

+0

wowwwwwwww非常感謝你:)它對我來說非常完美:) – praveenrsmart

0
Select Hobbies, Count(*) From 
(Select `person`, Group_concat(`hobby` Order by `hobby`) as Hobbies 
From Table1 Group by `person`) Result 
Group by Hobbies; 

Fiddle

+0

它dosent給我的朋友任何結果。無論如何,謝謝你 – praveenrsmart

+0

這也很好。 –