2011-02-04 152 views
1

表用户包含字段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中的类型。

+0

结束重构他们的整个数据库,使这个问题消失。最后,事情变得更容易,速度提高了约4000%。谢谢你尝试。如果有未来的读者找到解决方案,请不要犹豫,直接与我联系。 – Swader 2011-02-07 07:11:27

回答

0

溶液重写与一对夫妇的高级子查询的查询。

0

你的描述很混乱。在你发布的代码片段中,你写了“... User.'type'From User”,而在描述中,你说用户表中没有类型字段。不过,我的猜测是,你正试图从FruitType表中获取'type'字段。

也许这是你在找什么
SELECT FruitType.type从FruitType英尺加盟的ON(ft.type = User.id)

+0

我知道会这样,对不起。让我再试一次,将通过缩短你的帖子修改原始帖子 – Swader 2011-02-04 11:26:50

相关问题