여러 테이블의 MySQL 테이블이 있으며 최종 사용자가 PHP 스크립트를 사용하여 해당 데이터로 보고서를 생성 할 수있게하려고한다고 가정 해 보겠습니다. 해당 테이블의 필드 이름을 드롭 다운에 표시 할 수 있으므로 사용자는 "first_name
은 John과 같습니다."라고 말할 수 있습니다. 큰. 하지만 필드 이름을 좀 더 읽기 쉽게하려면 어떻게해야할까요? 예를 들어 사용자가 "first_pet_name
"대신 "First Pet의 이름"을 필드로 선택할 수있게하고 싶습니다. 테이블을 꽤 자주 추가하고 제거 할 수 있으므로 마크 업에 해당 정보를 저장하고 싶지는 않습니다. 가장 간단한 방법은 무엇입니까?MySQL 테이블에서 보고서 생성
답변
밑줄을 공백으로 바꾸고 대문자를 첫 글자로 바꾸는 것과 같은 간단한 작업을 수행합니다.
테이블을 생성하여 텍스트 정보를 테이블 + 열 쌍에 바인딩 할 수 있습니다. 명의 사용자가이고 first_name 대신 '이름의 첫 번째 애완 동물'을 표시하려고한다고 가정 해 보겠습니다.
ParentTable | ParentColumn | Text
users | first_name | Name of First Pet
...
그래서 당신은 당신의 열 레이블에 대한 고유 식별자를 가지고 :
은 (테이블 이름 ColumnTextInformations)의가 있다고 가정 해 봅시다.를 사용하여 매우 쉽게 :
이SELECT Text
FROM ColumnTextInformations
WHERE parentTable = ? AND parentColumn = ?
나는 데이터베이스에 저장 것입니다.
CREATE TABLE human_labels (
schema varchar(64) not null,
table varchar(64) not null,
column varchar(64) not null,
label tinytext not null,
primary key (schema, table, column)
);
어디 스키마는 일반적으로 (당신이 데이터베이스를 전환 할 때 USE
후 어떤 일이 일어나는지) MySQL의에서 "데이터베이스"라고 부릅니다; 테이블과 컬럼은 꽤 분명합니다.
물론 스키마를 변경할 때마다 DBA가이를 업데이트해야합니다.
MySQL은 테이블에는 주석을 허용하지만 열은 허용하지 않는다고 생각합니다.
편집 : varchar가 64로 변경되었으므로 MySQL 매뉴얼에서 최대 크기로 기록했기 때문입니다. 또한 원하는 경우 각 열에 주석을 달 수 있으며, 그 정보를 information_schema.columns에서 읽을 수 있습니다. 그러나 나는 여전히 위의 방법대로 유연하게 처리 할 수 있습니다 ("이 필드를 표시해야합니까?"와 같이 쉽게 추가 데이터를 입력 할 수 있음). 또한 의도 한 용도로 주석을 사용할 수 있습니다.
이것이 가장 좋은 방법이라고 생각합니다. 메타 데이터를 사용하면보다 유연하고 확장 가능한 보고서를 만들 수 있습니다. 당신은 당신의 사용자가 더 좋고 유용한 보고서를 얻을 수 있도록 몇 가지 다른 정보를 저장할 수 있습니다. – Cesar
가장 간단한 해결책은 으로 구분 된 식별자을 사용하는 것입니다. 이것은 공백, 구두점 및 특수 문자, SQL 키워드 등을 포함하는 테이블 이름과 열 이름을 표기 할 수 있습니다.
SQL 쿼리에서 테이블 이름과 열 이름을 한정해야합니다 (정의에 사용되는 CREATE TABLE
문 포함) .
CREATE TABLE `User Facts` (
`User Name` VARCHAR(100)
...
`Name of First Pet` VARCHAR(100)
...
);
SELECT `Name of First Pet`
FROM `User Facts`
WHERE `User Name` = 'Bill';
MySQL은 기본적으로 구분 식별자에 백틱을 사용합니다 (위 그림 참조).
자세한 내용은 "Do different databases use different name quote"을 참조하십시오.
기술적으로는 입니다. - MySQL에서는 코드 전체에서 해당 식별자를 둘러싸는 경우 공백을 포함하는 테이블과 열을 만들 수 있습니다. 예 :
mysql> create table `This is a Table` (`First Name` varchar(50),
`Name of First Pet` varchar(20));
Query OK, 0 rows affected (0.06 sec)
mysql> insert into `This is a Table` values ('Tom', 'Skippy');
Query OK, 1 row affected (0.01 sec)
mysql> select * from `This is a Table`;
+------------+-------------------+
| First Name | Name of First Pet |
+------------+-------------------+
| Tom | Skippy |
+------------+-------------------+
1 row in set (0.00 sec)
열 별칭이 있습니까?
SELECT 애완 Name of First Pet
AS 사용자 사용자 = '빌 FROM USER_NAME AS Name of User
;
- 1. OpenOffice에서 MySQL 보고서 생성
- 2. 보고서 생성
- 3. MySQL 데이터베이스 테이블에서 SQL 스크립트 생성
- 4. 메트릭/보고서 생성 문제
- 5. Java에서 PDF 보고서 생성
- 6. Java를 사용하여 보고서 생성
- 7. ms 액세스로 보고서 생성
- 8. PHP 보고서 생성
- 9. 보고서 생성 자동화
- 10. android : junit 보고서 생성
- 11. TestNG 보고서 생성
- 12. xml 파일에서 보고서 생성
- 13. HTML TestNG 보고서 생성
- 14. Excel 보고서 생성
- 15. PHP에서 PDF 보고서 생성
- 16. MySQL 계정 고령화 보고서
- 17. 다른 서버에서 호스팅되는 여러 MySQL 데이터베이스에서 보고서 생성
- 18. 관계형 테이블에서 XML 생성
- 19. MySQL 테이블에서 값 빼기
- 20. MySQL 트리거 : 테이블에서 테이블
- 21. MySQL 테이블에서 배열 만들기
- 22. mysql, 테이블에서 모두 선택
- 23. MySQL 테이블에서 생성 된 시간을 저장하는 방법은 무엇입니까?
- 24. PHP에서 생성 된 여러 동적 HTML 테이블에서 MySQL 삽입하기
- 25. Android 로깅 및 보고서 생성
- 26. 크리스탈 보고서 CSV 부정확 생성
- 27. C# 개체에서 SSRS 보고서 생성
- 28. 비교 도구 및 보고서 생성
- 29. SQL 쿼리에서 html 보고서 생성
- 30. BIRT의 POJO에서 동적 보고서 생성
테이블 이름에 공백을 두는 것이 좋은 생각입니까? – Matthew
나는 밑줄을 공백으로 동적으로 바꾸어 사용자에게 보여줄 것을 의미한다고 생각합니다. 빌 클린 (Bill Karwin)의 대답과 나중에 대답 할 때 실제로 이름에 공백을 두는 것이 그 해결책을 추천한다고 말할 수는 없다. – yukondude
검색 가능한 필드를 지정할 수 있기를 바랄뿐입니다 (드롭 다운이 불필요한 필드로 허물어지는 것을 막기 위해). '인간의 레이블'에 대한 세부 정보를 제공하는 다른 테이블을 사용하면 그렇게 할 수 있었고 원래의 문제도 해결할 수있었습니다. – Matthew