我有一个与此类似的数据库模型:Foreign key for multiple tables。
我有account
表。 account
可以是venue
或band
类型。我决定在帐户表中创建一个复合密钥:id_account | type
- 他们一起组成一个PK(类型可能是场地或乐队或他们的数字等价物)
我知道我是怎么做的选择所有包含account
表格数据的场地:SELECT account.*, venue.* FROM venue INNER JOIN account ON (venue.id=account.id AND type=venue)
。
现在,我有一个管理面板,用户拥有自己的帐户(这是其中一种类型 - 场地或乐队)。当他记录时,面板与场地账户和乐队账户不同。 我是否需要一个查询来检查帐户类型(让我们说它的位置),然后另一个查询到venue
表来获取他的数据?否则 - 我可以做类似的事情:
SELECT ... FROM IF(type=venue, venue, band)
答案 0 :(得分:1)
有几种方法可以解决这个问题。执行这两个查询可能不是太昂贵,但是如果你想要,你可以将“帐户”查询加入'band'和'venue'表(通过某些唯一ID),然后根据结果取适当的列。结果中的“帐户类型”列。