2011-02-04 86 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

相關問題