2017-12-03 5 views
1

Hallo! Ich habe eine Abfrage, die Bildschirmdaten ausgeben muss.
Jeder Bildschirm hat 4 Kabinen, die angezeigt werden sollen. Ich brauche eine Abfrage mit einem Ergebnis (weil ich nur einen Bildschirm haben) und hat 4 Kabinen drin (Coz I 4 Kabinen zugewiesen)Innerhalb einer Select-Abfrage auswählen MYSQL

Hier ist meine Frage:

$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; 

Ich möchte so etwas wie dies:

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

Meine Abfrage gibt so etwas wie dieses:

[ 
{ 
"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" 
} 
] 

Antwort

1

das Ergebnis in Ordnung ist .. braucht nur ein wenig Iterierte den Wert zu erhalten ..

$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; 
} 

Ergebnis:

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

Array-Schlüssel kann nicht hat denselben Schlüssel Namen

+0

das tun würde der Trick, danke! –

+0

aber das passt nicht, wenn ich mehrere Bildschirme habe, da es mehrere Ergebnisse zurückgibt. –

+0

dann müssen Sie die Daten iterieren .. setzen Sie einige Logik .. dann produzieren Ausgang .. Dies ist nur Beispiel aus Ihren Daten – ZeroOne

Verwandte Themen