Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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# 计算c后在sql中输入值_C#_Mysql_Sql_Visual Studio 2012 - Fatal编程技术网

C# 计算c后在sql中输入值

C# 计算c后在sql中输入值,c#,mysql,sql,visual-studio-2012,C#,Mysql,Sql,Visual Studio 2012,我对这个有点陌生,但我会尽量提供更多的细节。这是我的SQL表 顾客 客户Id PK |第一个|最后一个|地址|电话|技术Id FK| ----------+----+----+-------+-----+-------+ 1 |鲍勃|史密斯| 123假圣| 3298492 | 1| 2 |约翰|曼| 123诺埃街| 2930482 | 1| 3 |汤姆|李|波尔克街123 | 9308523 | 2| 技术人员 技术Id PK |第一个|最后一个|电话|客户计数| -------+----+-

我对这个有点陌生,但我会尽量提供更多的细节。这是我的SQL表

顾客

客户Id PK |第一个|最后一个|地址|电话|技术Id FK| ----------+----+----+-------+-----+-------+ 1 |鲍勃|史密斯| 123假圣| 3298492 | 1| 2 |约翰|曼| 123诺埃街| 2930482 | 1| 3 |汤姆|李|波尔克街123 | 9308523 | 2|

技术人员

技术Id PK |第一个|最后一个|电话|客户计数| -------+----+----+-----+--------+ 1 |蒂姆|博| 9384027 || 2 |安迪|王| 9374927 || 3 |杰克|救命| 2183847 ||

我试图找到最好的方法来计算每项技术使用SQL查询或C编码拥有多少客户。我正在考虑使用Count进行查询,然后在Tech表中插入Customer\u Count


我使用的是visual studio 2012,SQL是在visual studio中本地创建的。请帮忙

您可以通过SQL执行此操作-使用GROUP BY子句按每项技术对结果进行分组。您可以使用COUNT函数返回分配给每项技术的客户数量。您可以将其放入UPDATE语句中,以更新每项技术的技术表中的customer_COUNT字段

例如:

UPDATE t 
SET t.customer_count = COUNT(c.customer_id)
FROM tech t 
INNER JOIN customers c ON c.tech_id = t.tech_id
GROUP BY c.tech_id

我倾向于使用Sql,但失败了…失望了。。 但我相信您可以使用Ado.net来完成这项工作。 这里是C演示代码

        //query from db use C#
        var allCus = new List<Customers>();
        var gps = allCus.GroupBy(w => w.Tech_Id);
        foreach(var gp in gps) {
            var techId = gp.Key;
            var cnt = gp.Count();
            //update Tech set Customer_Count = cnt where Tech_Id = techId
        }

Holp它可以工作。

从技术表中删除Customer\u Count列。除非有有效的性能原因,否则最好不要创建重复可用数据的列。如果要将其显示为这样,请创建一个视图:

SELECT t.tech_id, 
       t.first, 
       t.last, 
       t.phone, 
       (SELECT COUNT(c.customer_id) 
        FROM customers c
        WHERE c.tech_id = t.tech_id) AS Customer_Count
FROM tech t

现在,您可以像表格一样查询它,但您不需要通过此视图维护始终是最新的数据。

客户计数的原因是,我需要计算每项技术应拥有的平均客户数,然后在有新客户时,它会将该客户分配给低于该平均值的技术。因此,如果我想将其放在C中,并找出哪个技术的客户数量最低,我该如何做?选择“按客户数量排序”中的前1*,ASC是您的查询,因此您可以从那里处理数据。用C语言获取数据的方法不计其数,它们都有很好的文档记录,而且很容易搜索。
SELECT t.tech_id, 
       t.first, 
       t.last, 
       t.phone, 
       (SELECT COUNT(c.customer_id) 
        FROM customers c
        WHERE c.tech_id = t.tech_id) AS Customer_Count
FROM tech t