@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 придется создавать новый столбец.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы