을 만드는 경우
감사
폴
PS는 MySQL 데이터베이스 것 가입 :
SELECT p.*, j.*
FROM People AS p INNER JOIN Roles AS r ON p.id = r.person_id
ORDER BY p.name;
의 나머지 작업은 포맷이다. 보고서 패키지를 사용하는 것이 가장 좋습니다. 좋은 시작을 보인다하지만 당신은 당신이 상상이 (같은 사람 당 여러 행을 얻을 빠른 응답을위한
감사는 의견 포맷 할 수있을 것하지 않는 테이블입니다)이 가능하다면
id | Name | email_address | phone_number | job_role | department
1 | paul | [email protected] | 123456 | secretary | HR
1 | paul | [email protected] | 123456 | assistant | media
2 | bob | [email protected] | 567891 | manager | IT
내가 모든 직무 역할과 이상적으로 사람 당 하나 개의 행을 원하십니까?
DBMS에 따라 다르지만 대부분 사용 가능한 것들은 RVAs - 관계형 속성을 지원하지 않습니다. 당신이 원하는 것은 사용자와 관련된 테이블과 같은 결과의 직무와 부서 부분을하는 것입니다 :
+----+------+------------------+--------------+------------------------+
| id | Name | email_address | phone_number | dept_role |
+----+------+------------------+--------------+------------------------+
| | | | | +--------------------+ |
| | | | | | job_role | dept | |
| 1 | paul | [email protected] | 123456 | | secretary | HR | |
| | | | | | assistant | media | |
| | | | | +--------------------+ |
+----+------+------------------+--------------+------------------------+
| | | | | +--------------------+ |
| | | | | | job_role | dept | |
| 2 | bob | [email protected] | 567891 | | manager | IT | |
| | | | | +--------------------+ |
+----+------+------------------+--------------+------------------------+
이 정확하게 원하는 정보를 나타내며,하지만 일반적으로 옵션이 아닙니다.
그러면 다음 단계는 보고서 생성 도구에 따라 다릅니다.필자가 가장 익숙한 Informix ACE (IBM Informix DBMS와 함께 사용할 수있는 Informix SQL의 일부인 Informix ACE)를 사용하면 데이터가 정렬되었는지 확인한 다음 이름, 전자 메일 주소 및 전화 번호 보고서의 'BEFORE GROUP OF ID'섹션에서 '모든 행에'섹션에서 역할 및 부서 정보 만 처리 (인쇄)합니다.
보고서 형식을 데이터 검색 작업과 구분하는 것이 좋습니다. 이것은 DBMS가 선택된 데이터의 포맷을 돕기 위해 특이한 기능을 가지고 있지 않는 한 필요한 곳의 예입니다.
매우 복잡 소리와 뭔가 내가 PHP 페이지에서 MySQL 데이터베이스에 쉽게 실행할 수 없습니다
오, 친애하는?
RVA는 당신이 맞습니다. 그것은 MySQL과 PHP가 아닙니다.
반면에 대략적으로 수행되는 수백만 개의 보고서 (사용자에게 표시하기 위해 형식화 된 쿼리의 결과를 의미 함)가 있습니다. 그들에 대한 기술적 용어는 'Control-Break Report'이지만 기본 아이디어는 그리 어렵지 않습니다.
마지막으로 처리 한 'id'번호의 기록을 유지합니다. -1 또는 0으로 초기화 할 수 있습니다. 현재 레코드의 이전 번호와 다른 ID 번호가있는 경우 새 사용자가 있고 새 사용자에 대한 새로운 출력 행 세트를 시작하고 이름, 이메일 주소 및 전화 번호를 인쇄하고 마지막으로 처리 된 ID 번호를 변경해야합니다. 현재 레코드의 ID 번호가 같으면 직책과 부서 정보 (이름, 전자 메일 주소 및 전화 번호 제외)를 처리하는 것뿐입니다. '중단'은 ID 번호가 변경 될 때 발생합니다. 단일 수준의 제어 중단으로 인해 어렵지 않습니다. 4 단계 또는 5 단계가 있다면 더 많은 작업을해야하기 때문에이를 처리 할 패키지를보고하는 것입니다.
그래서 어렵지 않습니다. 단지 조금만 신경 써야합니다.
감사합니다. 사용이 끝나고 잘 작동합니다. – AdrenalineJunky
이것은 매우 영리하고 알아두면 편리하지만, 여전히 PHP에서 데이터를 정상적으로 조인하고 포맷하는 것을 선호합니다. 언젠가 일일 역할간에
을 추가하는 등의 형식을 변경하려면 SQL 쿼리를 수정해야합니다. GROUP_CONCAT은 DB 로직과 프리젠 테이션의 분리를 제거합니다. 또한 단위 테스트를 훨씬 어렵게 만듭니다. – dave1010