Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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,我有一个翻译数据库,我需要找到没有翻译成某些核心语言的变量,以及翻译成某种语言但不是另一种语言的变量 数据库的简化版本如下所示: 创建表变量( id int无符号主键自动递增, 名称varchar(15) ); 创建表语言( id smallint无符号主键自动递增, 名字叫瓦查尔(31), ietf varchar(5) ); 创建表转换( var_id int无符号非空, lang_id smallint无符号非空, 瓦尔·瓦尔查尔(128), 主键(变量id、语言id), 约束trans_

我有一个翻译数据库,我需要找到没有翻译成某些核心语言的变量,以及翻译成某种语言但不是另一种语言的变量

数据库的简化版本如下所示:

创建表变量(
id int无符号主键自动递增,
名称varchar(15)
);
创建表语言(
id smallint无符号主键自动递增,
名字叫瓦查尔(31),
ietf varchar(5)
);
创建表转换(
var_id int无符号非空,
lang_id smallint无符号非空,
瓦尔·瓦尔查尔(128),
主键(变量id、语言id),
约束trans_fk_var
外键(变量id)
参考变量(id),
约束trans_fk_lang
外键(lang_id)
参考语言(id)
);
插入变量(名称)值('var1')、('var2')、('var3');
在语言(名称,ietf)中插入值(“德语”、“de”)、(“西班牙语”、“es”)、(“德语(奥地利)”、“de AT”)、(“西班牙语(墨西哥)”、“es MX”);
插入转换值(1,1,‘字符串1’,(1,2,‘字符串2’,(1,3,‘字符串3’,(2,1,‘字符串4’,(2,2,‘字符串5’,(3,1,‘字符串6’);
我试图找出的问题是:

  • 哪些变量未转换为至少一种语言1 和2(在本例中为var 3)
  • 哪些变量转换为语言2而不是语言4(在本例中为变量1和2)

上述查询将经常执行,而且数据库很大,因此我需要查询尽可能便宜。

您可以使用
分组方式和
拥有
。因此,你的第一个问题可以用以下措辞:

select var_id
from translations t
group by var_id
having count(*) < (select count(*) from language);

到目前为止你试过什么?
select var_id
from translations t
group by var_id
having sum(lang_id = 2) > 0 and
       sum(lang_id = 4) = 0;