Я застрял здесь довольно сильно, и мне нужна помощь, пожалуйста! У меня есть две таблицы: cost_t и budget_t.
Вот моя таблица бюджета, где родители могут иметь нескольких детей и назначать им бюджет.
budget_t:
bud_id bud_date bud_amount bud_category chi_id par_id
------ ---------- ---------- ------------- ------ ------
1 2020-03-01 200 Food 1 1
2 2020-03-01 100 Entertainment 1 1
3 2020-04-01 200 Food 2 2
4 2020-04-01 100 Entertainment 3 2
Вот моя таблица расходов, здесь регистрируются расходы детей.
exp_id exp_date exp_amount exp_category chi_id
------ ---------- ---------- ------------- ------
1 2020-03-10 50 Food 1
2 2020-03-20 50 Entertainment 1
3 2020-04-15 20 Food 2
4 2020-05-31 50 Food 1
Я пытаюсь сделать следующее: линейный график с MONTH (например, March) на оси X, в то время как total bud_amount и total exp_amount для этого указанного c месяца для указанного c дочернего элемента на оси Y. Например, линейная диаграмма для chi_id = "1" будет выглядеть следующим образом: -
Я не могу понять asp понимания того, как SQL запросы работают, так как я все еще новичок в этом! Но это SQL запросы, которые я пробовал, но они не работали. Третий запрос, кажется, работает, но только для одной таблицы .. Я не знаю, как объединить обе таблицы вместе.
SELECT exp_date, DATE_FORMAT(exp_date, '%Y-%m-01') AS month, sum(exp_amount) AS expense, sum(bud_amount) AS budget FROM expense_t INNER JOIN budget_t ON
expense_t.chi_id=budget_t.chi_id WHERE (exp_date BETWEEN "2019-04-07" AND "2020-04-07") AND expense_t.chi_id="1" GROUP BY month ORDER BY month // the sum for both amounts went crazy
SELECT exp_date, EXTRACT(MONTH FROM exp_date) AS month, sum(exp_amount) AS expense, sum(bud_amount) AS budget FROM expense_t INNER JOIN budget_t ON
expense_t.chi_id=budget_t.chi_id WHERE (exp_date BETWEEN "2019-04-07" AND "2020-04-07") AND expense_t.chi_id="1" GROUP BY month ORDER BY month // the sum for both amounts went crazy too
SELECT EXTRACT(MONTH FROM exp_date) AS month, sum(exp_amount) AS expense FROM expense_t WHERE (exp_date BETWEEN "2019-04-07" AND "2020-04-07")
AND chi_id="1" GROUP BY month ORDER BY month // the sum and month are perfectly fine but no idea how to combine with budget_t table.
Требуются результаты от SQL запросов (общий бюджет и расходы для уточнения c месяц (взят из даты) для специфики c chi_id: -
month total_budget total_expense chi_id
----- ------------ ------------- ------
March 300 100 1
April 0 0 1
May 0 50 1
etc...
Вот мой PHP код: -
<?php
include('conn.php');
if (!isset($c_id)) {
$c_id = $_GET['c_id'];
}
$sql = "Please-help-me!";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result)<=0)
{
die("<script>alert('Sorry, there is not info to generate chart. Please try again after you have recorded more expenses!'); window.history.go(-1);</script>");
}
else
{
$row = mysqli_fetch_array($result);
?>
<html>
<head>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/font-awesome.min.css" rel="stylesheet">
<link href="css/datepicker3.css" rel="stylesheet">
<link href="css/styles.css" rel="stylesheet">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Date', 'Budget', 'Expense'],
<?php
while($row=mysqli_fetch_array($result))
{
echo "['".$row["month"]."', '".$row['budget']."', '".$row['expense']."'],";
}
?>
]);
var options = {
title: 'Budget-Expense Line Chart for <?php echo "$user" ?>',
curveType: 'function',
pointSize: 10,
legend: { position: 'right' }
};
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
<?php
}
?>
</html>