@Urukhayy

Как сделать такой запрос?

Есть таблица, в ней 10 столбцов с названиями: Name1, Name2, Name3 ... Name10.
Есть вторая таблица, которая имеет столбец Number и HumanID.
Так вот, мне нужно вытащить значение одного из столбцов (Name1 ... Name10) для HumanID, при условии, что Number равен числу, которое есть в первой таблице у одного из Name.
А именно, если Number равен числу 4, то извлекётся Name4, если равен числу 7, то соответственно будет извлекаться Name7.
  • Вопрос задан
  • 2171 просмотр
Пригласить эксперта
Ответы на вопрос 3
rework
@rework
Помог ответ? В благодарность отметь его решением
что-то мне подсказывает, что у вас структура БД не совсем правильная, и в данном случае лучше использовать 3ю таблицу для связки, а не плодить кучу полей.
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
В целом плюсую rework но если решать задачу в лоб - есть 2 пути:
или 2 запроса (первым вытаскиваем number, втором выбираем нужное поле) или запрос с кучей IF
Ответ написан
Комментировать
@AlexeyVD
Структура таблицы с именами у вас однозначно неправильная. Советую вам ее сразу переделать.
Создайте таблицу names с полями (Number, Name) и заполните ее записями вида ([1, Name для Number=1], [2, Name для Number=2], ... и т. д.). Тогда вытащить нужные вам данные можно будет простым запросом:
SELECT names.Name
  FROM humans
  JOIN names ON humans.Number = name.Number
  WHERE humans.HumanID = 1;

И вообще подобные вопросы возникать не будут.
А с вашей структурой вам даже чтобы добавить еще одно значение Name придется создавать новый столбец.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы