Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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多对多关系-更改或选择到和_Mysql_Sql - Fatal编程技术网

MySQL多对多关系-更改或选择到和

MySQL多对多关系-更改或选择到和,mysql,sql,Mysql,Sql,我有以下代码 从crm\u task中选择不同的t.`id\u task`,左键使用(`id\u task`)将crm\u task标签连接到asso组,其中asso.id\u标签位于(1,2,5,6) 我的问题是,它包括在或基础上,而不是和基础上(excluded工作正常)。寻找将()中的id\u任务更改为和的有效方法 因此,我接收所有分配了1、2、5和6个标记的条目 数据库结构: CREATE TABLE `crm_task_tagtogroup` ( `id_task` INT U

我有以下代码

从crm\u task中选择不同的t.`id\u task`,左键使用(`id\u task`)将crm\u task标签连接到asso组,其中asso.id\u标签位于(1,2,5,6)
我的问题是,它包括在
基础上,而不是
基础上(excluded工作正常)。寻找将()中的
id\u任务更改为
的有效方法
因此,我接收所有分配了1、2、5和6个标记的条目

数据库结构:



CREATE TABLE `crm_task_tagtogroup` (
`id_task`  INT UNSIGNED  , 
`id_tag`  INT UNSIGNED  , 
 UNIQUE KEY (`id_task`, `id_tag`)
) CHARACTER SET utf8 COLLATE utf8_general_ci ;

CREATE TABLE `crm_task` (
`id_task`  INT UNSIGNED   AUTO_INCREMENT PRIMARY KEY , 
`name`  VARCHAR(30), 
`description`  TEXT , 
`priority`  INT UNSIGNED  , 
`client_id`  INT UNSIGNED  , 
`value_netto`  INT UNSIGNED
) CHARACTER SET utf8 COLLATE utf8_general_ci ;



有什么想法吗?希望保持简单,不要在PHP脚本中包含foreach checking,我认为您希望获得的代码与此非常接近:

SELECT DISTINCT t.`id_task` FROM crm_task t INNER JOIN crm_task_tagtogroup tag ON (id_tag in (1,2,3)) having count(distinct id_tag) = 3;
将参数列表放在on子句中,并将这些参数的计数放在having count语句的末尾

这意味着只返回与参数数量匹配的结果


我希望这有帮助

想知道这个否决票是为了什么…也许遗漏了?你在寻找php或sql答案吗?更新的问题来简化我需要SQLGreat!左连接返回常规的内部连接结果。如果想要左连接结果,请将WHERE子句条件移动到ON子句。(或者做内部连接,如果你想要内部连接的结果。)好提示!找到工作了<代码>选择*,按cnt=2的t.id\U任务将(不同的关联id\U标记)计数为cnt从crm\U任务左加入crm\U任务\U标记组关联打开(asso.id\u任务=t.id\u任务和asso.id\u标记在(1,6))分组。如果cnt=2
则关联id\U任务不工作