Как получить данные из 2 таблиц и отобразить их в 1 графике? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть две разные таблицы.

Таблица 1: еда (в которой есть поле с названием еды)

Таблица 2: food_details (в которой есть поле количества еды)

оба связаны идентификатором еды.

Я создал диаграмму js, чтобы отобразить график количества еды, поэтому сейчас диаграмма связана с таблицей 2 и отображает мое количество с меткой id. Но моя проблема в том, что я хочу отобразить название еды в виде метки с количеством, но в таблице 1 указано поле, которое я не знаю, как получить и отобразить вместо идентификатора еды или даже если это возможно.

Здесь мой код

Данные:

<?php 

header('Content-Type: application/json');

define('DB_HOST', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'chartjs');

$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if(!$mysqli){
    die("Connection failed: " . $mysqli->error);
}

$query = sprintf("SELECT id, available_quantity FROM food_details ORDER BY id");

$result = $mysqli->query($query);

$data = array();
foreach ($result as $row) {
    $data[] = $row;
}

$result->close();

$mysqli->close();

print json_encode($data);

 ?>

скрипт сценария

<script type="text/javascript">

$(document).ready(function(){
    $.ajax({
        url: "http://localhost/chartjs/data.php",
        method: "GET",
        success: function(data) {
            console.log(data);
            var id = [];
            var available_quantity = [];

            for(var i in data) {
                id.push("id" + data[i].id);
                available_quantity.push(data[i].available_quantity);
            }

            var chartdata = {
                labels: id,
                datasets : [
                    {
                        label: 'Food Storage',
                        backgroundColor: 'rgba(200, 200, 200, 0.75)',
                        borderColor: 'rgba(200, 200, 200, 0.75)',
                        HoverBackgroundColor: 'rgba(200, 200, 200, 1)',
                        HoverBorderColor: 'rgba(200, 200, 200, 1)',
                        data: available_quantity
                    }
                ]
            };

            var ctx = $("#mycanvas");

            var barGraph = new Chart(ctx, {
                type: 'horizontalBar',
                data: chartdata
            });
        }, 
        error: function(data) {
            console.log(data);
        }
    });
});
</script> 

Заранее спасибо

1 Ответ

0 голосов
/ 13 апреля 2020

Вы, похоже, ищете join:

SELECT f.name, fd.available_quantity 
FROM food_details fd
INNER JOIN food f on f.id = fd.id
ORDER BY fd.id

Этот запрос извлекает name каждого id из таблицы food и вместо этого помещает его в первый столбец. из id. Строки по-прежнему упорядочены по id - вы можете изменить это на name, если вы этого хотите.

...