MySQL - использование значения одного поля для назначения другого поля по имени - PullRequest
1 голос
/ 04 февраля 2011

Таблица User содержит поля id, name, fruit, veggies, meat.
Таблица FruitType содержит поля id, type, healthy, user.
Давайте предположим, что таблица User выглядит следующим образом:

1, марвин, яблоко, морковь, свинина
2, зорлакс, черника, салат, ягненок

.. в то время как таблица FruitType выглядит так:

1, фрукты, да, 1
2, veggies, yes, 2

Я хотел бы иметь возможность присоединиться к ним и искать значение в Users в определенном поле, в зависимости от значения из ""Тип "поле в FruitType.Например, я хотел бы иметь возможность сделать это:

SELECT User.'type' FROM User 

LEFT JOIN FruitType ft ON (ft.user = User.id) etc.. conditions and so on...

По сути, я хочу, чтобы часть 'type' принимала значение поля 'type' в таблице 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 является переменной.Если оно не равно нулю, просто используйте его значение в качестве идентификатора поля.

Редактировать:

Для ясности: в User нет столбца "type".«Тип» в примере запроса должен быть заменен фактическим значением типа в таблице FruitType.Поэтому, если условие дает результат FruitType.type = fruit, я хочу запрос SELECT User.fruit.Если условие дает FruitType.type = veggies, я хочу запрос SELECT User.veggies.Надеюсь, теперь стало понятнее.Я хочу, чтобы поле, которое я выбираю, зависело от типа в FruitType.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2011

Решением было переписать запрос с помощью нескольких расширенных подзапросов.

0 голосов
/ 04 февраля 2011

Ваше описание очень запутанно. В размещенном вами фрагменте кода вы написали "... User.'type 'From User", а в описании говорите, что в таблице User нет поля типа. Тем не менее, я предполагаю, что вы пытаетесь получить поле 'type' из таблицы FruitType.

Вероятно, это то, что вы ищете
ВЫБЕРИТЕ FruitType.type из FruitType ft ВКЛЮЧЕНО в пользователя (ft.type = User.id)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...