Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
Mysql SQL查询返回不正确的计数_Mysql - Fatal编程技术网

Mysql SQL查询返回不正确的计数

Mysql SQL查询返回不正确的计数,mysql,Mysql,我试图通过使用MySQL查询获取应用程序中所有功能的计数和功能名称。以下是查询: 从判断任务t1中选择t2.feature,countt2.feature作为计数,批准t2,其中t1.application\u name='Retail Bank Portal'和t2.gap\u status=1按功能分组; 以下是我的表格说明: 表2.1.1.1任务 表批准 两个表之间没有像外键那样的关系。数据库是由其他人设计的,现在无法更新,因为应用程序即将完成。更新数据库会干扰整个应用程序设计。 以下是查

我试图通过使用MySQL查询获取应用程序中所有功能的计数和功能名称。以下是查询: 从判断任务t1中选择t2.feature,countt2.feature作为计数,批准t2,其中t1.application\u name='Retail Bank Portal'和t2.gap\u status=1按功能分组; 以下是我的表格说明: 表2.1.1.1任务

表批准

两个表之间没有像外键那样的关系。数据库是由其他人设计的,现在无法更新,因为应用程序即将完成。更新数据库会干扰整个应用程序设计。 以下是查询结果:

+---------+-----+
| feature | app |
+---------+-----+
| S3      | 175 |
| Login   | 875 |
+---------+-----+
 
原始计数如下: S3=1, 登录名=5

我没有得到确切的查询来得到我的结果。你能建议我更正一下我的问题吗?我应该如何更新它以获得结果?谢谢 更新1

这里是judge_任务的示例数据

| 100173 |              4 | Retail Bank Portal |         16 | Login                   |         1 |
| 100203 |             -1 | Retail Bank Portal |         16 | Login                   |         2 |
| 100204 |              4 | Retail Bank Portal |         19 | Bill Pay                |         2 |
| 100205 |             -1 | Retail Bank Portal |         16 | Login                   |         2 |
| 100206 |             -1 | Retail Bank Portal |         16 | Login                   |         2 |
| 100207 |             -1 | Retail Bank Portal |         16 | Login                   |         2 |
| 100208 |             -1 | Retail Bank Portal |         16 | Login                   |         2 |
| 100209 |             -1 | Retail Bank Portal |         22 | S3                      |         2 |

 
批准的样本数据

我已经根据示例数据更新了表定义,删除了不相关的列。谢谢

更新
有一件事我忘了提到,数据必须从approve表中选择,只有应用程序名称才能从judge_任务中选择。

您正在对查询执行隐式交叉联接,这意味着表A中的所有行都在后台与表B合并

首先找到可以显式连接表feature\u id=feature.id的方法


使用显式联接内部联接、左联接、右联接等,而不是在FROM子句中使用隐式联接列出带有comas的表。

首先:在查询中联接两个表不需要外键。您所需要的只是两个表中具有相同数据的字段,该字段允许创建此关系,例如,TaskID或类似的内容。字段名称不一定相同。 表中允许在表中创建此连接的字段只有:judge_task.feature_name和approve.feature。我想我们可以试试这个查询:

select t2.feature, count(t2.id) from judge_task as t1 
join approve as t2 on t2.feature = t1.feature_name
where t1.application_name='Retail Bank Portal'  AND t2.gap_status=1 
group by feature;

如果您的表有许多行,我建议您在judge_task.feature_name和approve.feature以及judge_task.application_name上创建索引,以提高性能。

以下是我进行查询的方法:

+---------+-----+
| feature | app |
+---------+-----+
| S3      | 175 |
| Login   | 875 |
+---------+-----+
 
选择不同的 t、 特征,t.特征 法官的任务 内连接 选择 app.feature,计数*为feature\u计数 从批准应用程序 其中app.gap_status=1 按app.feature分组 t.feature=judge_task.feature_name上的t 其中judge_task.application_name='零售银行门户' ; 你可以从中看到结果


通过内部选择,您可以避免由于与approve表的笛卡尔积而导致结果重复

当然,这两个表之间存在某种关系。如果没有,那么你将不得不进行交叉连接,这不是你想要的。@MatBailie对此表示抱歉。你能建议这里应该使用哪个连接吗?那真是太好了helpful@TimBiegeleisen那么我应该在这里用什么呢?谢谢如果您有一些示例数据,它将非常有用。您显然从judge_任务表中获得175行,而从approve表中仅获得6行。首先,我会目视检查这些行,确定您想要的结果,然后使用一些示例数据更新这个问题。我是否可以从当前的表模式中获得任何方法?它返回以下内容:| Login | 285 | | S3 | 3 |这看起来不像是正确的查询。这对我来说是一种全新的查询方式,因为我已经离开数据库一年多了。
|  59 | Login                   |          1 |
|  60 | Login                   |          1 |
| 115 | Login                   |          1 |
| 116 | Login                   |          1 |
| 117 | Login                   |          3 |
| 118 | Login                   |          3 |
| 119 | Login                   |          3 |
| 120 | Login                   |          3 |
| 121 | Login                   |          3 |
| 122 | Login                   |          3 |
| 123 | Login                   |          3 |
| 124 | Login                   |          3 |
| 125 | Login                   |          3 |
| 126 | Login                   |          3 |
| 127 | Login                   |          3 |
| 128 | Login                   |          1 |
| 129 | S3                      |          1 |
+-----+-------------------------+------------+
 
select t2.feature, count(t2.id) from judge_task as t1 
join approve as t2 on t2.feature = t1.feature_name
where t1.application_name='Retail Bank Portal'  AND t2.gap_status=1 
group by feature;