Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MySql内部连接在google piechart上显示数据_C#_Mysql_Asp.net_Json_Ajax - Fatal编程技术网

C# 使用MySql内部连接在google piechart上显示数据

C# 使用MySql内部连接在google piechart上显示数据,c#,mysql,asp.net,json,ajax,C#,Mysql,Asp.net,Json,Ajax,我需要在google piechart上显示一些数据,我必须使用两个表来实现这一点。表名为authentication和agentdetails,这两个表都有类似的列agentlogin。agentdetails拥有代理的所有数据,通过身份验证,我可以获得已注册代理的数量。我需要从agentdetails中获取agentlogin的数据,这些agentdetails也出现在身份验证中,我想按skill2列对它们进行分组 <script type="text/javascript" src=

我需要在google piechart上显示一些数据,我必须使用两个表来实现这一点。表名为authentication和agentdetails,这两个表都有类似的列agentlogin。agentdetails拥有代理的所有数据,通过身份验证,我可以获得已注册代理的数量。我需要从agentdetails中获取agentlogin的数据,这些agentdetails也出现在身份验证中,我想按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;
            }
        }
    }
桌子


我该怎么做?提前感谢。

如果您想计算是否发生了身份验证,那么您需要一个左联接来获取第一个表中的所有结果,而不仅仅是两个表中出现的结果

如果表之间的关系是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;

希望这对您有所帮助

如果您想计算是否发生了身份验证,那么您需要一个左联接来获取第一个表中的所有结果,而不仅仅是两个表中出现的结果

如果表之间的关系是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;

希望对您有所帮助

您能提供表格结构和一些示例数据吗?@GuyLouzon如是说asked@GuyLouzon我想将表1中的agentlogin按表2中他们所属的技能进行分组。不清楚您在问什么。。。你在数什么?登录事件?你愿意为每个用户或每个技能计算吗?@GuyLouzon让我们假设代理的最大数量是代理详细信息中的750,我需要从750人中获取数据,其中有多少人注册了身份验证,我希望他们按照各自的技能进行分组。请提供表结构和一些示例数据?@GuyLouzon也这样做了asked@GuyLouzon我想将表1中的agentlogin按表2中他们所属的技能进行分组。不清楚您在问什么。。。你在数什么?登录事件?你想按用户还是按技能计算这些代理吗?@GuyLouzon让我们假设代理的最大数量是750个,从agentdetails中,我需要获得750个代理中有多少已注册到身份验证中的数据,我希望他们按各自的身份分组skills@prkash乐意帮忙:@prkash乐意帮忙: