2012-02-27 56 views
0

我有「記錄」有兩列「meta_value」和「FIELD_ID」表:按熱門程度排序

meta_value field_id item_id 
Customer 11  1 
Sweden  1  1 
Second  1  1 
First  1  1 
Done  1  2 
No  1  2 
First1  2  2 
First2  2  2 
Finland  2  3 
Customer 11  3 
112233  2  3 
Booked  2  3 
First NAme 89  4 
Last Name 9  4 
Belgium  3  4 
Customer Name 11  4 
11223344 12  5 
Booked  3  5 
First Name2 89  5 
Last Name2 9  5 
The Netherlands 10  6 
Customer Name2 11  6 
221133  4  6 
Booked  4  6 

Item_id意味着提交的網站上形式的ID,
field_id - 形式參數名
meta_value - 此參數的值。

field_id=1是人的姓名(值存儲在meta_valuefield_id=2是關鍵字(值存儲在meta_value),此人已經進入其中。

我需要做的是顯示前5名最多輸入「預訂」的關鍵字。
我不是很擅長MySQL請求,所以也許有人可以幫助我?

+5

歡迎StackOverflow上。由於這幾乎可以肯定是家庭作業(請標記爲這樣),我們需要請您告訴我們您嘗試了什麼......我們會提供幫助,但我們不會爲您做。 – 2012-02-27 14:47:51

+3

提示:'ORDER BY'和'LIMIT' – jordanm 2012-02-27 14:50:24

+1

由於數據中包含元值,字段ID和表單ID,但與人無關,因此您似乎忽略了某些關鍵信息。你怎麼知道哪個人輸入了數據的元值'Booked'? (因爲數據顯示'已預訂',可能這就是所需要的,而不是'已預訂'。不幸的是,計算機需要這樣的精度和細節。) – 2012-02-27 14:52:19

回答

0

我做到了:

SELECT t3.name, COUNT(*) as Cnt FROM 
(SELECT t1.meta_value AS name, t2.meta_value AS type, t2.item_id AS field_id FROM 
(SELECT * FROM wp_frm_item_metas WHERE field_id=9) AS t1 INNER JOIN (SELECT * FROM wp_frm_item_metas WHERE field_id=13) AS t2 ON t1.item_id = t2.item_id WHERE t2.meta_value="Booked") AS t3 GROUP BY t3.name ORDER BY Cnt DESC