我正在使用 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/