【发布时间】:2012-12-04 01:49:53
【问题描述】:
我正在使用 LAMP。在 MySql 中,我有一个包含 X、Y 和 Z 列的表。我需要从多个集合和子集中选择不同的记录。如果我的初始标准是 WHERE Y = A;那么我需要能够:
- 通过选择 Y = A 的记录来获取集合 B,
- 通过选择 X 在集合 B 中且 Z = 123 的记录来获取集合 C
- 通过选择 Y 在集合 B 中且 Z = 456 的记录来获取集合 D
- 通过选择 X 在集合 D 中且 Z = 789 的记录来获取集合 E
桌子可能会变得很大,我不确定从哪里开始。一些可能的方法是:
- 有多个单独的查询。在这种情况下,我将如何缓存一个查询的结果集以用作另一个查询的输入?内存缓存?
- 使用嵌套子查询。但是内部查询的结果纯粹是为了限制外部查询,不是吗?如何让它们出现在结果中?
- 使用联合。但是如何存储一个查询的结果以用作另一个查询的输入?
- 多次将表加入到自身中。这将产生一个笛卡尔结果,其中外部行重复多次。这将映射到应该是可管理的多维 PHP 数组。但是性能呢?
我倾向于选项 4,但不是 100% 确定。我是在重新发明轮子吗?
非常感谢...
【问题讨论】:
-
您真的需要中间集(B、C 和 D),还是只关心 E 集?
-
嗨,Ripta,是的,我确实需要中间集。