2012-09-19 3 views
1

나는 문제가 있으며 내 친구는 테이블 매핑을 사용해야한다고 말합니다.하지만 테이블 매핑이 무엇인지 모르며, 내가 무엇을 할 것인지 잘 모르겠습니다. 목표는테이블 매핑 mysql

랭크 08이 모든 데이터를 얻기 위해 테이블 ​​직원 데이터에서 직원

+-------+------------+------+-------------------------+ 
| ac_no | department | rank | email     | 
+-------+------------+------+-------------------------+ 
| 12ac | 01  | 08 | [email protected]    | 
| 1an4 | 02  | 08 | [email protected]    | 
| dr17 | 01  | 08 | [email protected]    | 
| 13IN | 01  | 05 | [email protected]   | 
| TE12 | 02  | 05 | [email protected]   | 
| GR45 | 01  | 05 | [email protected]   | 
+-------+------------+------+-------------------------+ 

나는 테이블 매핑에 삽입해야합니다 여부를

나는이 테이블이

+-------+------------+------+-------------------------+ 
| 12ac | 01  | 08 | [email protected]    | 
| 1an4 | 02  | 08 | [email protected]    | 
| dr17 | 01  | 08 | [email protected]    | 
+-------+------------+------+-------------------------+ 

순위가 05이고 동일한 부서에있는 데이터를 찾은 다음 두 개 이상의 이메일이 분할되면 데이터를 가져옵니다.

+-------+---------------+------------+------------------------------+ 
| ac_no |email   | department |    email   | 
+-------+---------------+------------+------------------------------+ 
| 12ac | [email protected] | 01  | [email protected];[email protected] | 
| 1an4 | [email protected] | 02  | [email protected]     | 
| dr17 | [email protected] | 01  | [email protected];[email protected] | 
+-------+---------------+------------+------------------------------+ 

나는 테이블 매핑에 테이블 직원에서 데이터를 처리하는 절차를 사용하려면,하지만 난 그것을 얻을하는 방법을 모르겠어요. 워크 벤치에서 프로 시저를 작성하고이를 실행하여 테이블 맵핑에 데이터를 삽입합니다.

select ac_no,department,rank,email,(select department,email from employee where rank=05)head from employee where rank=08; 

하지만 기본적인 질문을한다면 나는이 쿼리를 subquery returns more than 1 row

죄송 결과를 실행,하지만 난 정말이 작업을 수행하는 방법을 모르는 경우. 순위 5와이어야 하나 명 더 직원을 갖는

1)에 관계없이 부서

2 순위 8) :

+0

당신이 묻고있는 것이 확실하지 않지만, h 외래 키와 innoDB를 사용하는 테이블. 정규화 된 데이터베이스를보아야합니다. – wesside

+1

@bigman 작은 데이터베이스 인 경우에는 괜찮지 만 데이터베이스가 큰 경우 비정규 화하면 성능이 크게 향상됩니다. 필요한 데이터를 얻기 위해 조인을 할 수 있습니다. 삽입하기 전에 모든 것을 확인하십시오. –

답변

0

select ac_no,department,rank,email from employee where rank = 08 and where department = all(select department from employee group by department) 
0
(select ac_no,department,rank,email from employee where rank=8) UNION (select ac_no,department,rank,email from employee where (rank,department) in (select rank,department from employee where rank=5 group by department having count(*)>1)) 
처럼 모든 직원의

반환 데이터를보십시오 같은 부서에 속한 순위 5 위

+0

나는 이것을 시험해 보지만 모든 순위를 얻는다 .... 08,05,06 – Belajar

+0

@Belajar hmmm ... 나는 그것을 스스로 시험해 보았다. 그리고 그것은 잘 작동했습니다. 일치하지 않는 순위의 데이터가 반환되지 않았습니다. – user1675644