2014-09-15 5 views
0

LAMP (Linux, Apache, MySQL, Perl)를 사용하고 있습니다. CPAN의 DBI 모듈 사용.Perl + MySQL (DBI)을 사용하여 해당 열의 항목 이름과 열 이름 만 가져 오기

나는 COLUMN_NAME과 COUNT를 동시에 얻으 려하고 Perl 해시에 저장하려고합니다.

그래서 나는이 같은 HTML 뭔가에 인쇄 할 수 : 나는 한 번에 한 세트를 해시의 키와 해당 값을 인쇄/foreach는 대한 루프를 필요 생각이 들어

Album: Selfies; #Column_Name 
Photos: 0; #Count 

. 보시다시피 기초가 내려졌습니다. 두 개의 별도 SQL 문을 성공적으로 작성했지만 더 효율적인 방법을 찾고 있습니다. 또한 몇 가지 문제가있었습니다 :

A. 첫 번째 Column_Name/Count 세트는 비어있는 상태로 나오고 있었지만 나머지는 괜찮습니다. 이 같은. 카운트가 0 인 경우

Album: 
Photos: 

Album: First 
Photos: 2 

B., 그것은 다시 빈 줄을 반환하고, 뭔가 같은 :

Album: First_album 
Photos: 

C. 모두를 해결하려면, 내가/^ $ grep을 시도/..하지만 결과는 다음과 같습니다.

Album: 1 
Photos: 1 

꽤 고생했습니다. 내 질문은 다음과 같습니다.

COLUMN_NAME 및 COUNT을 (를) 얻기위한 결합 된 SQL 문이있는 경우. 별도의 진술을 준비하는 방법을 알고 있지만 하나의 진술로 줄이는 방법이 있기를 바랍니다.

초 질문, 나는 내가 잘못 부분은 COLUMN_NAME이

$rv = $sth->fetchrow_array; #I think this is the wrong way maybe. 

내가 DBI 문서를보고 다른 일을 시도하다 추출 생각하지만, 지금까지 생각하지 않은 위의 처음 2 가지 문제를 극복하는 방법을 알아보십시오. MySQL 데이터베이스의


샘플 구조 :

DB : 표 테스트 :

열 firsttable : 셀카가 Panaroma 셀카가 Panaroma 5 개 값을 포함하고, 3 개 값을 포함한다.

내가 DBI/펄을 사용하여이 정보를 추출하고 다음과 같은 방식으로 그것을 제시 할 : 나는 당신이 무슨 일을하는지 이해한다면

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' 
+1

참고로 P의 LAMP는 Perl이 아닌 PHP를 나타냅니다. – Barmar

+0

귀하의 질의는 무엇입니까?쿼리에서 열 이름을 알면 어떨까요? – Barmar

+0

위의 질문을 약간 편집했습니다. 또한 LAMP와 관련하여 P는 일반적으로 PHP이므로 Perl을 명확하게 설명했습니다. @Barmer –

답변

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 

결과를 가져 와서 루프로 출력하십시오.

+0

나는 이것을 몇 분 안에 시도 할 것이다. –

+0

이것은 실제로 필요한 것이 아닙니다. 난 테이블의 모든 열을 나열하려고뿐만 아니라 해당 열의 값을 계산합니다. –

+0

왜 열이 그런 식으로 만들어 집니까? 데이터를 올바르게 정상화하지 않은 것 같습니다. 동적 데이터는 열이 아닌 열 값이어야합니다. – Barmar