根据另一个表中的选定行过滤一个表中的记录集

时间:2019-05-10 11:54:35

标签: mysql

我正在开发一个产品配置器(php / mysqli),在该产品中,主表存储(按程序逐页地)关联的选项表中的ID。

我要做的是根据先前选择/存储的选项兼容性过滤选项记录集。

以下示例应说明:

主表

| ZOO_AREA_ID | ANIMAL_ID | ENCLOSURE_ID |
| 6           | 1         | 5            |
| 7           | 2         | 6            |
| 8           | 3         | ??????       |

动物桌

| ANIMAL_ID | ANIMAL | ENCLOSURE_TYPE_IDS |
| 1         | Mouse  | 2,5,6              |
| 2         | Lizard | 6                  |
| 3         | Crab   | 3,4                |

附件表(菜单列表的选项)

| ENCLOSURE_ID | ENCLOSURE         |
| 1            | Large walled area |
| 2            | Wire Cage         |
| 3            | Oceanarium        |
| 4            | Water Tank        |
| 5            | Hutch             |
| 6            | Vivarium          |

因此,如果我要在主表中配置ZOO_AREA_ID第8行,并且已经选择并更新了ANIMAL_ID 3(螃蟹)。我想为一个下拉列表创建一个记录集,该记录集限制了“封闭表”中的结果,其中“动物”表的ENCLOSURE_TYPE_IDS中列出了ENCLOSURE_ID。

在这种情况下,记录集结果应为:

| ENCLOSURE_ID | ENCLOSURE  |
| 3            | Oceanarium |
| 4            | Water Tank |

实现此目标的最佳方法是什么?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我摆脱了animals表中的ENCLOSURE_TYPE_IDS,并为Animals(一列Integer ID)与Enclosures(第二列Integer ID)兼容的实例创建了一个新的XREF Table。

然后,获取所需的记录集。...

选择e。* FROM附件表e 左联接animals_enclosures_xref xref开启xref.ENCLOSURE_ID = e.ENCLOSURE_ID xref.ANIMAL_ID =:-无论链接ID是-:

认为我没错,但这已经结束了...:)