Mysql 如何使用;计数/每“;在sql查询中 介绍

Mysql 如何使用;计数/每“;在sql查询中 介绍,mysql,sql,sqlite,Mysql,Sql,Sqlite,我有以下sql表。每个实体都有一对多变体,每个变体都有一对多实体 - ENTITY (ID INTEGER PRIMARY KEY, ID_ENTITY TEXT NOT NULL, wiki_title TEXT); - VARIATIONS (ID INTEGER PRIMARY KEY NOT NULL, NAME TEXT, LANGUAGE TEXT, TYPE TEXT); - VAR_ENTITE (ID_ENTITE TEXT NOT NULL, ID_VAR INTEGER N

我有以下sql表。每个实体都有一对多变体,每个变体都有一对多实体

- ENTITY (ID INTEGER PRIMARY KEY, ID_ENTITY TEXT NOT NULL, wiki_title TEXT);
- VARIATIONS (ID INTEGER PRIMARY KEY NOT NULL, NAME TEXT, LANGUAGE TEXT, TYPE TEXT);
- VAR_ENTITE (ID_ENTITE TEXT NOT NULL, ID_VAR INTEGER NOT NULL, PRIMARY KEY(ID_ENTITE, ID_VAR), FOREIGN KEY(ID_ENTITE) REFERENCES ENTITE(ID_ENTITE), FOREIGN KEY (ID_VAR) REFERENCES VARIATIONS(ID));

问题 如何使用
sql
语言来计算每个实体的变体数量


包含示例数据的表列表 实体 表实体有3条记录

 ID   Id_ENTITE  wiki_title
48398|m.0nkkw65|Record label|
48399|m.0cp5rvm|Location|
117142|m.0n479hn|Yuika_Sugasawa|

瓦伦特 表Var_entite显示,实体m.0nkkw65m.0760j5n只有1种变化,而m.0n479hn有2种变化

  Id_entity Id_var
  m.0nkkw65|109628
  m.0760j5n|109631
  m.0n479hn|261081
  m.0n479hn|261082

变化
结果 因此,我应该能够看到以下内容:

m.0nkkw65: 1
m.0760j5n: 1
m.0n479hn: 2

看起来像一个简单的连接,带有计数。猜测您的表是如何连接在一起的:-

SELECT a.id, a.id_entite, COUNT(c.id) AS variation_count
FROM entity a
LEFT OUTER JOIN var_entite b
ON a.id = b.id_entite
LEFT OUTER JOIN variations c
ON b.id_var = c.id
GROUP BY a.id, a.id_entite

请注意,您可能不需要加入variances表(如果您不需要从variances中获取任何其他信息,则可以使用var_entite表中的id)。另外,如果所有项目都至少有一个变体,您可能会切换到使用内部联接而不是左外部联接

看起来像一个简单联接,带有计数。猜测您的表是如何连接在一起的:-

SELECT a.id, a.id_entite, COUNT(c.id) AS variation_count
FROM entity a
LEFT OUTER JOIN var_entite b
ON a.id = b.id_entite
LEFT OUTER JOIN variations c
ON b.id_var = c.id
GROUP BY a.id, a.id_entite

请注意,您可能不需要加入variances表(如果您不需要从variances中获取任何其他信息,则可以使用var_entite表中的id)。此外,如果所有项目至少有一个变体,您可能会切换到使用内部联接而不是左外部联接,这将起作用。只需计算与实体名称相关的变体数量,如“安吉拉·默克尔”

选择COUNT(v.ID)作为变量的数量
来自变体v
在ve.ID上的内部连接VAR\u ENTITE ve\u VAR=v.ID
e.ID=ve.ID\u ENTITE上的内部连接实体e

其中e.wiki_title='Angela Merkel'
这将起作用。只需计算与实体名称相关的变体数量,如“安吉拉·默克尔”

选择COUNT(v.ID)作为变量的数量
来自变体v
在ve.ID上的内部连接VAR\u ENTITE ve\u VAR=v.ID
e.ID=ve.ID\u ENTITE上的内部连接实体e

其中e.wiki_title='Angela Merkel'

您已经使用了哪些查询?如果您在三个表中的每个表中显示示例数据,我认为这将对我们有所帮助。这将消除很多猜测。@TimBiegeleisen我添加了样本数据。您已经使用了哪些查询?如果您在三个表中的每个表中显示样本数据,我认为这将对我们有所帮助。这将消除很多猜测。@TimBiegeleisen我添加了示例数据。我正在运行sql命令。我有一个问题,为什么要使用“a.id”我不明白它在查询中的含义?我只是给表名添加了别名,以避免每次引用表中的一列时都需要指定全名。所以只是懒散!不,不是那样。我只是想知道你为什么用a.id=b.id\u实体。它不应该是a.id\u entite=b.id\u entite吗?我试过了谢谢你,kickstartbingo成功了。是的,我应该把身份证换成身份证,就这样。非常感谢你,谢谢你。抱歉,我只是猜测了一下哪些列在表之间具有公共值。我正在运行sql命令。我有一个问题,为什么要使用“a.id”我不明白它在查询中的含义?我只是给表名添加了别名,以避免每次引用表中的一列时都需要指定全名。所以只是懒散!不,不是那样。我只是想知道你为什么用a.id=b.id\u实体。它不应该是a.id\u entite=b.id\u entite吗?我试过了谢谢你,kickstartbingo成功了。是的,我应该把身份证换成身份证,就这样。非常感谢你,谢谢你。抱歉,我只是猜测了一下哪些列在表之间具有公共值。