MySQL:在单个记录上选择几个外键字段

时间:2015-01-13 00:29:09

标签: mysql foreign-keys innodb

在MySQL(InnoDB)中,我创建了两个属于历史字符列表的相关表:

characters:
-----------------------------
character_id (PK):    int
name:                 varchar
birthplace:           varchar
birthplace_checking:  int
birthdate:            date
birthdate_checking:   int
------------------------------

checking:
------------------------------
checking_id (PK):     int
checktype:            varchar 
------------------------------

其中' birthplace_checking'和' birthdate_checking'外键指的是' checking_id'和' checktype'应该包含信息性数据,例如“未知”,“文档证明”,“推测”和“#39;等等。

我想要实现的是在'字符'上执行SELECT语句。所以' * _检查' int值被各自的“checktype”替换。文本(当然可能不同)。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

诀窍是加入'检查'两次,如下所示:

select  c.name
    ,   c.birthplace
    ,   bplace.checktype
    ,   c.birthdate
    ,   bdate.checktype
from    characters c
join    checking   bplace
            on c.birthplace_checking = bplace.checking_id
join    checking   bdate
            on c.birthdate_checking = bdate.checking_id

答案 1 :(得分:0)

只是为了记录,一个更紧凑的版本应该是:

select  c.name
    ,   c.birthplace
    ,   bplace.checktype
    ,   c.birthdate
    ,   bdate.checktype
from    characters c, checking bplace, checking bdate
where   c.birthplace_checking = bplace.checking_id
  and   c.birthdate_checking  = bdate.checking_id