Цикл результатов из одной строки в таблицу JOIN для сопоставления нескольких определений

0

Мне нужно объединить/перебрать некоторые данные, но не уверен, как это сделать, используя только запросы типа Mysql вложенные /WHERE IN. У меня есть одна таблица, которая выглядит так:

id, code1, code2, code3, code4........... code20
1   12     41     1                       55

Так много столбцов, они не все имеют значения, но из тех, которые делают, мне нужно взять каждый из этих кодов и вернуть строку для кода из таблицы, которая выглядит так:

codeid, description
1       item1
12      item12
13      item13 
41      item41
...

Я надеялся, что могу использовать подстановочный знак в моем выборе для столбцов, таких как

SELECT description FROM table2 WHERE IN(SELECT code* FROM table1)

Это не похоже на подстановочные знаки, которые могут возникнуть из моего googling, но кто-то здесь может знать трюк. Как я могу взять все значения из первой таблицы в виде списка, запустить запрос на нем, чтобы вернуть определения каждого кода в виде отдельных строк?

Теги:

1 ответ

1

Нет, вы не можете использовать подстановочный знак. Это проблема с вашей структурой данных. Всякий раз, когда у вас есть столбцы, которые отличаются только цифрами, у вас, вероятно, проблема с моделью данных.

Вместо этого вы должны иметь таблицу с одной строкой для каждого id и code.

Вы можете сделать что-то вроде:

select t2.description
from table2 t2
where exists (select 1
              from table1 t1
              where t2.code in (t1.code1, t1.code2, . . . )
             );

Производительность будет не очень хорошей. Для этого см. Первое предложение по исправлению модели данных.

  • 0
    Я полностью согласен с тем, что модель данных - это дерьмо, к сожалению, это не мое исправление, а просто интеграция с ней. Большое вам спасибо - пробуем это сейчас :)
  • 0
    Вы имели в виду select 1 ? Я получаю ошибку при реализации этого таким образом. Честно говоря, я использую соединение ODBC с базой данных C-Tree. В most случаев это совместимо с командами Mysql, но иногда это сбивает меня с толку.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню