多个表的复合键:我是否需要单独的查询来检查表类型?

时间:2012-09-25 15:52:13

标签: mysql

我有一个与此类似的数据库模型:Foreign key for multiple tables

我有account表。 account可以是venueband类型。我决定在帐户表中创建一个复合密钥: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)

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题。执行这两个查询可能不是太昂贵,但是如果你想要,你可以将“帐户”查询加入'band'和'venue'表(通过某些唯一ID),然后根据结果取适当的列。结果中的“帐户类型”列。