表用户包含字段ID,名称,水果,蔬菜,肉类。
Table FruitType包含字段id,类型,健康,用户。
让我们假设表用户看起来是这样的:MySQL - 按名称使用一个字段的值来定位另一个字段
1,马文,苹果,胡萝卜,猪肉
2,Zorlax,蓝莓,莴苣,羔羊
..而FruitType表看起来像这样:
1,水果,是的,1
2,蔬菜,是的,2
我想什么是能够加入他们的行列,并搜索用户价值,在一个特定领域,这取决于来自“t在FruitType中的“ype”字段。例如,我希望能够做到这一点:
SELECT User.'type' FROM User
LEFT JOIN FruitType ft ON (ft.user = User.id) etc.. conditions and so on...
基本上,我想要的“类型”部分采取“类型”字段的值在FruitType表。实质上就像场变量。
我希望我已经够清楚了。这是我的工作,现在一个真实的例子,如果这似乎太混乱了,虽然真正的可以做更大的危害:
IF (trigger_by_date IS NOT NULL,
date_add(books.trigger_by_date, INTERVAL trigger_by_date_add DAY),
date_add(trigger_step_created_at, INTERVAL trigger_by_step_add DAY))
as deadline
在这种情况下,trigger_by_date是变量。如果它不为空,只需使用它的值作为字段标识符。
编辑:
为了清楚起见:用户中没有“type”列。示例查询中的“类型”应该由FruitType表中的实际值类型替换。所以如果一个条件产生FruitType.type = fruit的结果,我想要查询SELECT User.fruit。如果条件给出FruitType.type =蔬菜,我想查询选择User.veggies。我希望现在更清楚。我基本上希望我选择的字段取决于FruitType中的类型。
结束重构他们的整个数据库,使这个问题消失。最后,事情变得更容易,速度提高了约4000%。谢谢你尝试。如果有未来的读者找到解决方案,请不要犹豫,直接与我联系。 – Swader 2011-02-07 07:11:27