按字段或继承字段的SQL搜索实体

时间:2015-06-11 08:57:27

标签: mysql sql join

我有这些表格:

table A

现在,来自父母的公寓和房间的配置可以继承

继承逻辑:

  • 如果对于Room,CONFIG_ID为null,则表示我们使用Apartment中的值,但如果Apartment也继承,则使用Block中的值。
  • 此外,如果Room有CONFIG_ID但是只有一个配置字段为NULL,这也意味着只继承该字段。 (例如,Room有一个config_id = 4,而config 4中的TYPE为NULL,表示该类型是继承的)

    实施例: Room" Kitchen"有CONFIG_ID = NULL 公寓"贵宾公寓"有一个CONFIG_ID!= NULL,TYPE = 2 因此,Kitchen TYPE为NULL,表示实际值为2(继承自Apartment)

我想要的是 SQL查询,以便按类型搜索会议室(即使它是如此继承的<)>

所以如果我搜索TYPE = 2的房间&#39;厨房&#39;上面应该找到,因为它继承自公寓。

我无法解决这个问题。我尝试在每个街区/公寓/房间使用3个连接,但我需要的配置每次都可以来自不同的桌子。而且我不知道如何有条件地加入每张桌子上的配置。

查询的伪代码:

table B

搜索类型为2的房间时的预期结果:

Config
ID
TYPE - number (possible values 0,1,2)

Block
CONFIG_ID

Apartment
CONFIG_ID
BLOCK_ID

Room
CONFIG_ID
APARTMENT_ID

0 个答案:

没有答案