0

我有一个有效的 mysql 查询:

SELECT  COUNT(*), c.description
FROM name_loc f
INNER JOIN countries       c ON f.fk_cnty_id  = c.id
INNER JOIN identifiers     i ON f.fk_ident_id = i.id
GROUP BY f.fk_cnty_id;

它返回:

+------+----------------+
| cnt  | description    |
+------+----------------+
| 1093 | AUSTRALIA      |
|  235 | BELGIUM        |
|  474 | BERMUDA        |

我需要一个语句,允许我绘制一个直方图,其中垂直轴是计数,水平轴是县。

我认为这会起作用:

totalCntLByCnty =   {#[[1, 2]], #[[2]]} & /@ SQLExecute[conn, "
SELECT  COUNT(*), c.description
FROM name_loc f
INNER JOIN countries       c ON f.fk_cnty_id  = c.id
INNER JOIN identifiers     i ON f.fk_ident_id = i.id  
GROUP BY f.fk_cnty_id
"]

我收到此错误:

Part::partd: Part specification {2,ANDORRA}[[1,2]] is longer than depth of object. >>

然后我需要绘制直方图。我已经为此花了一个小时,所以任何帮助将不胜感激。

4

1 回答 1

1

您的数据采用许多子列表的列表形式,每个子列表有两个元素。像这样:

{{cnt1,description1},{cnt2,description2},...}

您的映射构造,/@ result挑选出每个子列表并将其交给匿名函数。所以#在你的匿名函数中有一个 list {cnt,description}#[[1]]cnt也是如此,#[[2]]描述也是如此。但是您正在尝试检索#[[1,2]]哪个将是cntif的第二个元素cnt是一个列表。但由于它不是列表,因此您无法检索该元素。它不存在。您正在寻找#[[1]]或寻找,#[[2]]但从不寻找,#[[1,something]]因为这不是您拥有的那种数据。

于 2013-05-31T15:57:26.413 回答