显示值的字段及其外键psql的字段

  • 本文关键字:字段 psql 显示 sql postgresql
  • 更新时间 :
  • 英文 :


我正在建模一个游戏,其中每个玩家都有另一个玩家分配给他们,他们必须"猎杀"谁。

我在postgresql

中有以下表
create table player( 
id int primary key, 
id_hunt int not null references player(id), 
name varchar(30) not null, 
email varchar(120) not null unique); 

并且想知道如何显示每个玩家的名字和他们的id以及他们必须追捕的玩家和他们的id。

create table player( 
id int primary key, 
id_hunt int references player(id), 
name varchar(30) not null, 
email varchar(120) not null unique); 
insert into player values (1, null , 'test', 'email');
insert into player values (3, 1 , 'test3', 'email_3');
update player  set id_hunt = 3 where id = 1;
select * from player ;
id | id_hunt | name  |  email  
----+---------+-------+---------
3 |       1 | test3 | email_3
1 |       3 | test  | email

select pred.id, pred.name AS pred, prey.id, prey.name AS prey from player as pred join player as prey on pred.id_hunt = prey.id;
id | pred  | id | prey  
----+-------+----+-------
3 | test3 |  1 | test
1 | test  |  3 | test3

我把NOT NULL改成了id_hunt,这样我就可以进入第一个玩家。当你输入没有"猎物"的玩家时,这将是一个问题。

无论如何,一般的想法是通过混叠表来实现自连接。