Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl+;仅获取该列中的列名和项数;MySQL(DBI)_Mysql_Sql_Perl_Dbi - Fatal编程技术网

使用Perl+;仅获取该列中的列名和项数;MySQL(DBI)

使用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语句,但我正在寻找一种更有

我正在使用LAMP(Linux、Apache、MySQL、Perl)。使用CPAN中的DBI模块

我试图同时获取列名称和计数,并将它们存储到Perl哈希中

这样我就可以用HTML打印如下内容:

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语句中完成这两件事,那就太好了。