2014-02-21 2 views
1

나는 두 테이블, 하나 sensor_info과 다른 하나는 테이블는 세 번째 테이블에 두 테이블의 데이터를 결합

id Sensor_Name stn_id value Station_id 
1 Sensor1   0  4.4  1 
2 Sensor2   0  2.1  1 
3 Sensor3   0  3.2  1 
4 Sensor4   1  4.5  1 

gate_id  bay_name bay_status Station_id 

GATE1  B_gate1   1   1 
GATE2  B_gate2  -999   1 
GATE3  B_gate2   1   1 
GATE4  B_gate2  -999   1 
GATE5  B_gate2   1   1 

친구 나는 모든 "센서를 보여줄 필요가 Bays_info bays_info.here되어있다가 각 게이트에 대해 "값"을 입력하십시오 (여기서 스테이션 ID는 공통 열임)

gate_id  bay_name bay_status Station_id Sensor1 Sensor2 sensor3 sensor4 

GATE1  B_gate1   1   1   4.4  2.1 3.2  4.5 
GATE2  B_gate2  -999   1   4.4  2.1 3.2  4.5 
GATE3  B_gate2   1   1   4.4  2.1 3.2  4.5 
GATE4  B_gate2  -999   1   4.4  2.1 3.2  4.5 
GATE5  B_gate2   1   1   4.4  2.1 3.2  4.5 

그래서 센서 테이블에서 값을 표시해야합니다. 각 역 및 또한 헤더로 센서 이름을 표시해야합니다. 제발 MySQL의 쿼리에 대한 도와주세요.

+1

어떤 관계를 시도? do not see any – Punter015

+0

@ Punter015 station_id는 두 표 모두에 공통적입니다. – vim

+0

응용 프로그램 수준에서 데이터 표시의 처리 문제를 고려하십시오 (예 : 정렬 된 배열에서 작동하는 간단한 PHP 루프). 피벗 쿼리를 사용하는 것보다 더 유연하고 확장 가능합니다. – Strawberry

답변

1

는 sensor_info와 bays_info 사이

select gate_id , bay_name , bay_status , bays_info.Station_id, 
    max(case when Sensor_Name = 'US.SEN1' then round(value,2) end) as Sensor1, 
    max(case when Sensor_Name = 'US.SEN2' then round(value,2) end) as Sensor2, 
    max(case when Sensor_Name = 'US.SEN3' then round(value,2) end) as Sensor3, 
    max(case when Sensor_Name = 'DS.SEN1' then round(value,2) end) as Sensor4, 
    max(case when Sensor_Name = 'DS.SEN2' then round(value,2) end) as Sensor5, 
    max(case when Sensor_Name = 'DS.SEN3' then round(value,2) end) as Sensor6, 
    max(case when Sensor_Name = 'MS.SEN1' then round(value,2) end) as Sensor7 
    from bays_info 
    inner join sensor_info 
    on sensor_info.Station_id = bays_info.Station_id 
    group by gate_id 

DEMO HERE

+0

에 공통입니다. 쿼리를 사용했지만 쿼리가 성공적으로 실행되었지만 센서 값이 비어 있지 않습니다. 모든 센서 열은 비어 있고 다른 열은 비어 있습니다. 데이터. – vim

+0

모든 센서에 대해 "NULL"값이 있습니다. – vim

+0

올바른 값을 가지고 있다면 null이되어서는 안됩니다. 올바른 Sensor_Name 또는 –

관련 문제