2017-12-03 3 views
1

안녕하세요! 화면 데이터를 출력해야하는 쿼리가 있습니다.
각 화면에는 4 개의 부스가 표시됩니다.선택 쿼리 내부에서 선택 MYSQL

$result = DB::select(" 
    SELECT 
     `A`.`scr_name`, 
     `A`.`mission_id`, 
     `B`.`booth_id`, 
     `E`.`name` 
    FROM `tbl_screen` `A` 
    LEFT JOIN 
     `tbl_screen_booths` `B` 
    ON `B`.`screen_id` = `A`.`id` 
    LEFT JOIN 
     `tbl_service_booths` `C` 
    ON `B`.`booth_id` = `C`.`id` 
    LEFT JOIN 
     `tbl_missions_services` `D` 
    ON `C`.`mission_services_id` = `D`.`id` 
    LEFT JOIN 
     `tbl_services` `E` 
    ON `D`.`service_id` = `E`.`id` 
    WHERE `A`.`mission_id` = $mission_id 
    GROUP BY 
     `B`.`booth_id`; 
"); 

return $result; 

내가 뭔가를 원하는 : (난 그냥 하나 개의 화면을 가지고 있기 때문에) 그리고 (나는 4 개 부스를 할당 사촌)

다음

내 쿼리의 IT 4 개 부스를 가지고 나는 하나 개의 결과로 질의를 필요로 이 :

[ 
{ 
"scr_name": "Test Screen", 
"mission_id": 2, 
"booth_id": 7, 
"name": "booth1" 
}, 
{ 
"scr_name": "Test Screen", 
"mission_id": 2, 
"booth_id": 9, 
"name": "booth2" 
}, 
{ 
"scr_name": "Test Screen", 
"mission_id": 2, 
"booth_id": 10, 
"name": "booth3" 
}, 
{ 
"scr_name": "Test Screen", 
"mission_id": 2, 
"booth_id": 11, 
"name": "booth4" 
} 
] 
:

"scr_name": "Test Screen", 
"mission_id": 2, 
"name": "booth1", //index[0] 
"name": "booth2", //index[1] 
"name": "booth3", //index[2] 
"name": "booth4" //index[4] 

내 쿼리는 다음과 같이 반환 6,

답변

1

이 결과는 .. 바로 .. 값을 얻기 위해 약간의 반복 처리를 괜찮 필요가있다

$data['scr_name'] = $result[0]->scr_name; 
$data['mission_id'] = $result[0]-> mission_id; 

foreach($result as $index => $item) { 
    $data['name'.($index+1)] => $item->name; 
} 

결과 :

"scr_name": "Test Screen", 
"mission_id": 2, 
"name1": "booth1", //index[0] 
"name2": "booth2", //index[1] 
"name3": "booth3", //index[2] 
"name4": "booth4" //index[4] 

배열 키 캔트 할 것 같은 키 이름

+0

이 속임수, 고마워! –

+0

그러나 여러 개의 결과가 반환되므로 여러 개의 화면이있는 경우 적합하지 않습니다. –

+0

다음 데이터를 반복해야합니다 .. 몇 가지 로직을 넣어 .. 출력을 생산 .. 이것은 귀하의 데이터에서 단지 샘플입니다 – ZeroOne