2010-06-22 3 views
0

유닛이있는 작업 단계와 관련된 특정 필드 만 잡는 방법을 알아 내려고합니다. 유닛과 작업이있는 테이블이 하나 있습니다 단계, 다음 각 단계에 대한 열이있는 다른 테이블이 있습니다. 나는 그 유닛의 현재 단계와 관련된 컬럼 만 가져오고 싶다.쿼리의 열 이름으로 필드 값 사용

여기 내 시도이지만 참조로 작업 값을 사용하는 방법을 찾을 수 없습니다. 내 문제는 t1.operation의 값보다는 하위 쿼리의 t1.operation 값과 일치하는 필드가 필요하다는 것입니다. 그게 말이 되니? 한 사람이 MySQL은 그래서 비록 동적 테이블 이름에 관한 한 인덱스 등을 기반으로 최적화하기 위해 쿼리 무엇 모르겠다 주로 때문에 할 수없는 말했다

SELECT t1.*, 
    (SELECT t1.operation 
    FROM report_tables.roc_capacity_standards As t2 
    WHERE t1.assembly=t2.part_number) As standard 
FROM report_tables.resource_transactions As t1 
WHERE t1.date BETWEEN '2010-06-01' 
        AND '2010-06-19' 
GROUP BY job, employee 
ORDER BY operation; 

온라인 검색 후 나는 발견 그것이 동일했다라고 확신하지 않았다. 여기에서 발견 된

는 : Reference

답변

0

나는 당신의 문제가 당신의 테이블이 아니라 쿼리의 디자인에있다 생각합니다. 내가 올바른 생각하면

, 당신의 테이블이에 유사 : 그것은 당신이 지금 가지고 같은 문제에 이르게으로이 가난한 디자인

units (unit_id, current_operation, date, ...) 
operations (unit_id, operation_1_value, operation_2_value, operation_3_value, ...) 

.

더 좋은 디자인이 될 것

units (unit_id, *other unit specific info* ...) 
operations (operation_id, operation_name, *other general operation info*) 
unit_operation (unit_id, operation_id, *operation_results, *operation_values, *date_started, *date_ended)