[英]Using MySql inner join to show data on google piechart
我需要在Google Piechart上顯示一些數據,並且我必須使用2個表來實現此目的。 表名稱是身份驗證和代理詳細信息,並且這兩個表都有相似的列,稱為“ agentlogin”。 agentdetails具有代理的所有數據,通過身份驗證,我可以獲取已注冊的代理的數量。 我需要從也顯示在身份驗證中的agentdetails獲取agentlogin的數據,我想按skill2列對它們進行分組。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
var options = {
title: 'Registration'
};
$.ajax({
type: "POST",
url: "adminrep.aspx/GetChartData",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var data = google.visualization.arrayToDataTable(r.d);
var chart = new google.visualization.PieChart($("#chart")[0]);
chart.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
}
</script>
public static List<object> GetChartData()
{
string query = "SELECT authentication.agentlogin, agentdetails.skill2, COUNT(authentication.agentlogin) TotalRegistration FROM agentdetails ";
query += " INNER JOIN authentication ON agentdetails.agentlogin = authentication.agentlogin WHERE agentdetails.location = 'PNQ10-Pune' GROUP BY skill2";
string MyConString = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
List<object> chartData = new List<object>();
chartData.Add(new object[]
{
"skill2", "TotalRegistration"
});
using (MySqlConnection con = new MySqlConnection(MyConString))
{
using (MySqlCommand cmd = new MySqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (MySqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
chartData.Add(new object[]
{
sdr["skill2"], sdr["TotalRegistration"]
});
}
}
con.Close();
return chartData;
}
}
}
表
我該如何完成? 提前致謝。
如果您想計算是否進行了身份驗證,那么,您將需要進行LEFT聯接才能從第一張表中獲取所有結果,而不僅僅是兩個表中都出現的結果
如果表之間的關系是1到1,那么每個座席將只出現一次,則左聯接上將不會出現重復的重新定義,並且重新定義應類似於您已經到達的重新定義。
請注意,當然,注冊總數將僅是已注冊的,而不是所有代理的:
SELECT
ad.skill2,
SUM(IF( auth.agentlogin IS NULL, 1,0)) AS TotalRegistration
FROM agentdetails ad
LEFT JOIN authentication auth ON ad.agentlogin = auth.agentlogin
WHERE ad.location = 'PNQ10-Pune'
GROUP BY
ad.skill2
您的原始查詢:
SELECT authentication.agentlogin, agentdetails.skill2, COUNT(authentication.agentlogin) TotalRegistration FROM agentdetails
INNER JOIN authentication ON agentdetails.agentlogin = authentication.agentlogin WHERE agentdetails.location = 'PNQ10-Pune' GROUP BY skill2;
希望能有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.