使用Perl+;仅获取该列中的列名和项数;MySQL(DBI)
我正在使用LAMP(Linux、Apache、MySQL、Perl)。使用CPAN中的DBI模块 我试图同时获取列名称和计数,并将它们存储到Perl哈希中 这样我就可以用HTML打印如下内容:使用Perl+;仅获取该列中的列名和项数;MySQL(DBI),mysql,sql,perl,dbi,Mysql,Sql,Perl,Dbi,我正在使用LAMP(Linux、Apache、MySQL、Perl)。使用CPAN中的DBI模块 我试图同时获取列名称和计数,并将它们存储到Perl哈希中 这样我就可以用HTML打印如下内容: Album: Selfies; #Column_Name Photos: 0; #Count Album: 1 Photos: 1 为此,我想我需要一个For/foreach循环来打印散列的键和相应的值,一次一组。如你所见,我记下了基础知识。。甚至成功地编写了两个单独的SQL语句,但我正在寻找一种更有
Album: Selfies; #Column_Name
Photos: 0; #Count
Album: 1
Photos: 1
为此,我想我需要一个For/foreach循环来打印散列的键和相应的值,一次一组。如你所见,我记下了基础知识。。甚至成功地编写了两个单独的SQL语句,但我正在寻找一种更有效的方法。此外,还有一些问题:
答:第一列的名称/计数集显示为空,但其余的都可以。像这样的
Album:
Photos:
Album: First
Photos: 2
B.如果计数为0,则再次返回空行,类似于:
Album: First_album
Photos:
为了解决这两个问题,我尝试grep/^$/。。但结果是这样的:
Album: Selfies; #Column_Name
Photos: 0; #Count
Album: 1
Photos: 1
我现在很困。我的问题是:
如果有一个组合SQL语句来获取列的名称和计数。我知道如何准备单独的声明,但我希望有一种方法可以将其简化为一个声明。
第二个问题,我认为我做错的部分是提取列名
$rv = $sth->fetchrow_array; #I think this is the wrong way maybe.
我通过查看DBI文档尝试了其他方法,但到目前为止,还没有找到解决上述前两个问题的方法
MySQL数据库的示例结构: DB:测试 表:第一表 专栏:自拍,Panaroma 自拍包含3个值,Panaroma包含5个值 我想使用DBI/Perl提取此信息,并以以下方式呈现它:
Album: Selfies
Photos: 3
Album: Panaroma
Photos: 5
Sql语句
SELECT COUNT(column_name) FROM table_name;
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table_name'
如果我理解你在做什么,这就是问题:
SELECT "Selfies" AS Album, COUNT(DISTINCT Selfies) AS Photos
FROM table_name
UNION
SELECT "Panorama" AS Album, COUNT(DISTINCT Panorama) AS Photos
FROM table_name
获取结果并在循环中输出。FYI,p in LAMP代表PHP,而不是Perl。您的查询是什么?你为什么不知道查询中的列名呢?在上面的末尾编辑了一下这个问题。同样关于LAMP,P通常是PHP,这就是我清楚描述Perl的原因@请显示您的SQL查询。还将显示一些示例数据以及您试图从中获得的结果。添加的infos@BarmerI将在几分钟内尝试此操作。。我会尽快告诉你的,这不是我真正需要的。我试图列出表中的所有列,并计算该列中的值数。为什么要这样创建列?看起来您没有正确地规范化数据。动态数据应该是列值,而不是columns.OK,所以您需要对information\u schema.columns执行查询。获取所有列名,并为每个列名生成一个子查询,就像我写的那样。然后用
UNION
将它们连接起来,并执行该查询。是的。给定表中的所有列名,并且每个列中没有值。如果我能在一条SQL语句中完成这两件事,那就太好了。