mysql - 如何使用关系划分?

标签 mysql sqlite relational-division

我正在使用 SQL 创建数据库,现在我想使用关系划分来搜索我想要的东西。在本例中,我想知道哪些玩家拥有所有图标。

CREATE TABLE OwnedIcon(PlayerID varchar(10) REFERENCES "Player" ("playerID"), IconID varchar(10) REFERENCES "Icon" ( "IconID"));

insert into OwnedIcon values('p001', 'icon001');
insert into OwnedIcon values('p001', 'icon002');
insert into OwnedIcon values('p001', 'icon003');
insert into OwnedIcon values('p002', 'icon001');
insert into OwnedIcon values('p003', 'icon001');
insert into OwnedIcon values('p003', 'icon002');

然后是图标

CREATE TABLE Icon(IconID varchar(10) PRIMARY KEY, IconName varchar(15));

其值:

insert into Icon values('icon001', 'beginner');
insert into Icon values('icon002', 'positive');
insert into Icon values('icon003', 'hunter');

我的想法是:

SELECT * from OwnedIcon, Icon WHERE OwnedIcon.IconID/Icon.IconID;

所以只有拥有所有图标,才会有结果。所以应该是玩家1。

但它根本没有给我任何东西。

最佳答案

您的 OwnedIcond 表引用了玩家 id 两次,我假设这不是您想要做的 - 您的第二次引用应该是项目 id。另外,划分以查找谁拥有所有图标并不是您想要做的,您应该对玩家和图标进行分组,并查找与数据库中图标数量相同的所有玩家。

我使用的是移动设备,但您想要执行以下操作:从拥有的图标中选择 *,按具有 count = (从图标中选择 count(*)) 的玩家 ID 进行分组

关于mysql - 如何使用关系划分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669752/

相关文章:

iphone - 如何获取sqlite3中最后更新的值

mysql - 同一列上的多个条件

Mysql 选择行

java - 如何只返回 hibernate 查询中的某些列?

c# - 使用 Entity Framework 将 MySql 数据转换为 Microsoft Sql

SQL 聚合唯一对

mysql - 从一个表中复制列并插入到另一个表中

Ubuntu 中不支持 SQLCipher 的 SQLite 浏览器

iphone - Sqlite + 80K 行 + LIKE = 键盘延迟