Ok vì vậy tôi đã viết ra giải pháp của bạn. Bạn phải chắc chắn rằng đơn đặt hàng theo được bao gồm ở đó vì nó giả định rằng bạn đang đặt hàng chúng với các mặt hàng ở đó cùng nhau. Tôi cũng không biết nhà xuất bản của bạn được lưu trữ như thế nào vì vậy tôi đã tách bảng đó thành một bảng riêng (điều này sẽ cho phép bạn sau đó nhận các mục chỉ bởi nhà xuất bản đó), hiện có 4 bảng kết hợp. Ngoài ra, trên một lưu ý khác, tôi đã cập nhật nó để thực hiện các phép nối bên trong. Bằng cách này, bạn sẽ không nhận được kết quả trống cho bảng điều khiển không có bất kỳ trò chơi nào được gán cho chúng. Nếu bạn muốn những điều này, bạn có thể chỉ cần thay đổi các phép nối để nó cũng cung cấp cho bạn những kết quả đó. Hãy cho tôi biết nếu điều này có ích
//get all of the information
$query = '
SELECT c.consoleId,c.consoleName,m.modelId,m.modelName,g.gameId,g.gameName,p.publisherId,p.publisherName
FROM `consoleconsole` c
INNER JOIN `consolemodel` m ON c.consoleId=m.consoleId
INNER JOIN `consolegame` g ON m.modelId=g.modelId
INNER JOIN `consolepublisher` p ON g.publisherId = p.publisherId
ORDER BY c.consoleName, m.modelName, g.gameName
';
//get the results
$result = mysql_query($query);
//setup array to hold information
$consoles = array();
//setup holders for the different types so that we can filter out the data
$consoleId = 0;
$modelId = 0;
//setup to hold our current index
$consoleIndex = -1;
$modelIndex = -1;
//go through the rows
while($row = mysql_fetch_assoc($result)){
if($consoleId != $row['consoleId']){
$consoleIndex++;
$modelIndex = -1;
$consoleId = $row['consoleId'];
//add the console
$consoles[$consoleIndex]['console'] = $row['consoleName'];
//setup the information array
$consoles[$consoleIndex]['information'] = array();
}
if($modelId != $row['modelId']){
$modelIndex++;
$modelId = $row['modelId'];
//add the model to the console
$consoles[$consoleIndex]['information'][$modelIndex]['model'] = $row['modelName'];
//setup the title array
$consoles[$consoleIndex]['information'][$modelIndex]['title'] = array();
}
//add the game to the current console and model
$consoles[$consoleIndex]['information'][$modelIndex]['title'][] = array(
'game' => $row['gameName'],
'publisher' => $row['publisherName']
);
}
echo json_encode($consoles);