2011-02-04 10 views
1

テーブルユーザーには、id、name、fruit、veggies、meatというフィールドがあります。
テーブルFruitTypeには、id、type、healthy、userの各フィールドが含まれています。
のは、テーブルのユーザーは次のようになります推測してみましょう:MySQL - 1つのフィールドの値を使用して別のフィールドを名前で指定する

:FruitTypeテーブルは次のようになりながら..

1、マーヴィン、アップル、キャロット、豚肉
2 Zorlax、ブルーベリー、レタス、ラム

を私が望む何を2

は、それらを結合、およびに応じて、特定のフィールドに、ユーザーの値を検索することができることです

1、果物、はい、1
2、野菜、はい、 "tからのVALUE 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テーブルのtypeの実際の値に置き換える必要があります。したがって、結果がFruitType.type = fruitという結果が得られた場合、SELECT User.fruitというクエリが必要になります。条件がFruitType.type = veggiesを指定した場合、SELECT User.veggiesへのクエリが必要です。今はっきりしていることを願っています。私は基本的に、FruitTypeの型に依存するように選択するフィールドを必要とします。

+0

この問題を解決するために、データベース全体の再構築を終了しました。結局、はるかに簡単で約4000%速くなったことが判明しました。試してくれてありがとう。将来の読者が解決策を見つけた場合は、私に直接連絡することを躊躇しないでください。 – Swader

答えて

0

ソリューションは、高度なサブクエリのカップルと、クエリを書き換えました。

0

あなたの説明は非常に混乱しています。あなたが投稿したコードスニペットでは、 "... User.'type 'From User"と書かれていますが、説明の中で、Userテーブルにはタイプフィールドはありません。それでも、FruitTypeテーブルから 'type'フィールドを取得しようとしていると思います。

おそらくこれはあなたがFruitTypeフィートから
SELECT FruitType.type探しているものである(ft.type = User.id)でユーザーを登録しよう

+0

私はそれが残念であることを知っていました。私は再び試してみましょう、元の投稿を変更します – Swader

+0

あなたの記事を短縮することによって透明性:) – ash

関連する問題