Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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# 行更改时SQL查询不更新表_C#_Mysql - Fatal编程技术网

C# 行更改时SQL查询不更新表

C# 行更改时SQL查询不更新表,c#,mysql,C#,Mysql,我的SQL查询有一个小问题,最好通过一个示例来解释: 1如果booking.status设置为open,则在方法运行并显示在数据表中时对其进行计数。让我们以plot_id=15为例,如您所见,它在表中出现了3次 2因此,更改将反映在plot.jobs中 3但是如果booking.status被更新,那么当方法运行或显示在数据表中时,它将不再被计算。这是意料之中的 4如果列表中没有显示,则表示plot.plot_id=15应为0。。。为什么在plot.jobs中仍然是3 我想我在if dtCoun

我的SQL查询有一个小问题,最好通过一个示例来解释:

1如果booking.status设置为open,则在方法运行并显示在数据表中时对其进行计数。让我们以plot_id=15为例,如您所见,它在表中出现了3次

2因此,更改将反映在plot.jobs中

3但是如果booking.status被更新,那么当方法运行或显示在数据表中时,它将不再被计算。这是意料之中的

4如果列表中没有显示,则表示plot.plot_id=15应为0。。。为什么在plot.jobs中仍然是3

我想我在if dtCounts.Rows.Count>0{…}条件中遗漏了一个SQL查询。问题是我不知道从哪里开始实施它。谁能给我指一下正确的方向吗?更新plot.jobs时,如何解释booking.status发生更改的实例

这是我目前的代码:


抱歉,由于某些原因,S/O不允许我将代码粘贴到答案中,它会不断返回错误消息

我不确定我是否理解您想要执行的操作

您是否想过在更新预订状态时实施触发器

CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    trigger_body

trigger_time: { BEFORE | AFTER }

trigger_event: { INSERT | UPDATE | DELETE }

我不知道我是否明白你想做什么

您是否想过在更新预订状态时实施触发器

CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    trigger_body

trigger_time: { BEFORE | AFTER }

trigger_event: { INSERT | UPDATE | DELETE }

第12-17行粘贴箱列表中给出的更新语句以booking.plot\u id为NULL l.17为条件。

第12-17行粘贴箱列表中给出的更新语句以booking.plot\u id为NULL l.17为条件。

如果我正确理解您的问题,我认为根本不需要循环。相反,您可以将查询合并为一个查询,该查询也可以处理空值:

update plot p 
inner join (
  select sum(case when status = 'open' then 1 else 0 end) cnt, plot_id
  from booking
  group by plot_id
  ) p2 on p.plot_id = p2.plot_id
set p.jobs = p2.cnt

有几件事需要注意-如果该绘图id的预订表中没有数据,该怎么办?增加新的地块怎么样

如果我正确理解了您的问题,我认为根本不需要循环。相反,您可以将查询合并为一个查询,该查询也可以处理空值:

update plot p 
inner join (
  select sum(case when status = 'open' then 1 else 0 end) cnt, plot_id
  from booking
  group by plot_id
  ) p2 on p.plot_id = p2.plot_id
set p.jobs = p2.cnt

有几件事需要注意-如果该绘图id的预订表中没有数据,该怎么办?增加新的地块怎么样

您提供的代码示例未显示booking.status的任何更新。在哪里发生的。。。更改预订状态时,您需要更新plot.jobs。或者在C业务逻辑中??或者在SQL.@G.Cito中-它发生在另一个方法中。如果你想看的话,我可以帮你贴上去。我已经在上发布了它,但是请注意SQL还没有参数化,所以它仍然处于开发的早期阶段。booking.status在“将作业分配给标书”部分更新,即BidList{…}中的foreach BidList t。我希望这能澄清问题。您提供的代码示例没有显示booking.status的任何更新。在哪里发生的。。。更改预订状态时,您需要更新plot.jobs。或者在C业务逻辑中??或者在SQL.@G.Cito中-它发生在另一个方法中。如果你想看的话,我可以帮你贴上去。我已经在上发布了它,但是请注意SQL还没有参数化,所以它仍然处于开发的早期阶段。booking.status在“将作业分配给标书”部分更新,即BidList{…}中的foreach BidList t。我希望这能澄清一些问题。是的,它需要以status='open'为条件才能更新plot.jobs,它提供了状态为='open'的所有作业的摘要。我的困境是,我不知道如何解释状态的变化。当前查询不再识别该行,因此不会更新该列。例如,如果2行的status='allocated',那么它仍然会作为3而不是1进行报告。希望它现在有意义。请看一下@G.Cito的评论,他提出了一个关于我在问题中忽略的东西的非常好的观点。我已经在pastebin.com/B2D29azv上发布了处理status='allocated'的代码。是的,它需要以status='open'为条件才能更新plot.jobs,它提供了状态为='open'的所有作业的摘要。我的困境是,我不知道如何解释状态的变化。当前查询不再识别该行,因此不会更新该列。例如,如果2行的status='allocated',那么它仍然会作为3而不是1进行报告。希望它现在有意义。请看一下@G.Cito的评论,他提出了一个关于我在问题中忽略的东西的非常好的观点。我已经在pastebin.com/B2D29azv.Now上发布了处理class='allocated'状态的代码,现在不止一个人注意到了。你能发布这样做的代码吗?我已经发布了-只是在这一点上SQL查询还没有被参数化,所以请记住
这是我计划在这个周末进行的一次清理活动。现在不止一个人注意到了。你能发布这样做的代码吗?我已经发布在-只是在这一点上SQL查询还没有被参数化,所以请记住,这是我计划在这个周末进行的清理活动。我遗漏了一个附加的子句,如果dtCounts.Rows.Count==0{…}at,请查看其他。我认为这是为了完成这项工作。顺便说一句,我不确定您的SQL查询如何适合我的代码上下文。我将把它放在哪里,它将如何改变事情?顺便问一下,该条款是否满足您刚才指出的要求,即如果该绘图id的预订表中不存在数据,该怎么办?我遗漏了一个附加条款,如果dtCounts.Rows.Count==0{…}at,请查看其他条款。我认为这是为了完成这项工作。顺便说一句,我不确定您的SQL查询如何适合我的代码上下文。我将把它放在哪里,它将如何改变事情?顺便问一下,该条款是否满足您刚才指出的要求,即如果该地块id的预订表中没有数据,该怎么办?