我使用LAMP(Linux,Apache,MySQL,Perl)。使用CPAN中的DBI模块。
我试图同时获取COLUMN_NAME和COUNT,并将它们存储到Perl Hash中。
这样我就可以用HTML打印这样的内容:
Album: Selfies; #Column_Name
Photos: 0; #Count
为此,我想我需要一个for / foreach循环来打印哈希的密钥和相应值,一次设置一个。我看到了基础知识。甚至成功编写了2个单独的SQL语句,但我正在寻找一种更有效的方法。此外,还有一些问题:
一个。第一个Column_Name / Count集合显示为空,尽管休息很好。像这样的东西。
Album:
Photos:
Album: First
Photos: 2
B中。在计数为0的情况下,它再次返回空白行,类似于:
Album: First_album
Photos:
℃。要解决这两个问题,我尝试grep / ^ $ / ..但结果是这样的:
Album: 1
Photos: 1
此刻相当困难。我的问题是:
如果有一个组合的SQL语句来获取COLUMN_NAME AND COUNT。我知道如何准备单独的声明,但我希望有一种方法可以将它简化为一个声明。
击>
第二个问题,我认为我做错的部分是提取COLUMN_NAME
$rv = $sth->fetchrow_array; #I think this is the wrong way maybe.
我通过查看DBI文档尝试了其他的事情,但到目前为止,还没有弄清楚如何克服上面的前两个问题。
MySQL数据库的示例结构:
DB:测试 表:firsttable
专栏:Selfies,Panaroma Selfies包含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'
答案 0 :(得分:1)
如果我理解你在做什么,这就是查询:
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
获取结果并循环输出。