2012-02-27 58 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