2012-11-21 7 views
0

Можно создать дубликат:
MySQL use column names from another tableMySQL Выберите значения косвенно разнообразном 'имя столбца'

У меня есть две таблицы:

  • TABLE_1 с некоторыми словами, извлеченные из любой текст; и

  • TABLE_2 со словами (в столбцах) частоты в соответствующем тексте

enter image description here

Я бы хотел, чтобы произвести TABLE_3 с author_id и словами (в строках), присутствующих в текст:

Table 3 http://www.infociencias.net/images/tab3.jpg

Как сделать это в MySQL?

+2

Вздох. _Что вы пробовали? _ – Madbreaks

+0

можете ли вы опубликовать то, что хотите в результате? – Taryn

+1

ВЫБОР B.Author_Id, A.Column_Name ОТ Table_1 А, Table_2 В, С INFORMATION_SCHEMA.COLUMNS, ГДЕ имя_таблицы = 'Table_2' И column_name = A.Column_Name –

ответ

0

Это UNPIVOT, что вы пытаетесь сделать, но MySQL не имеет UNPIVOT функцию, так что вам нужно будет повторить его с помощью UNION ALL:

SELECT c.author_id, words, value 
FROM Table1 A 
INNER JOIN 
(
    select author_id, alfa value, 'alfa' col 
    from table2 
    union all 
    select author_id, car value, 'car' col 
    from table2 
    union all 
    select author_id, zoom value, 'zoom' col 
    from table2 
) C 
    ON A.words = C.col 
order by c.author_id 

См SQL Fiddle with Demo

результата:

| AUTHOR_ID | WORDS | VALUE | 
----------------------------- 
|  123 | alfa |  3 | 
|  123 | zoom |  0 | 
|  123 | car |  0 | 
|  157 | alfa |  0 | 
|  157 | zoom |  2 | 
|  157 | car |  0 | 
|  332 | alfa |  1 | 
|  332 | zoom |  0 | 
|  332 | car |  3 | 
|  519 | car |  0 | 
|  519 | alfa |  0 | 
|  519 | zoom |  0 | 
|  588 | car |  1 | 
|  588 | alfa |  5 | 
|  588 | zoom |  0 | 
|  777 | car |  0 | 
|  777 | alfa |  0 | 
|  777 | zoom |  1 | 
|  804 | car |  7 | 
|  804 | alfa |  0 | 
|  804 | zoom |  5 | 
+0

Привет, bluefeet! Было бы хорошо, если бы я знал слова раньше, но я не могу. Каждый текст имеет разные слова. К сожалению, слова alfa, car, zoom случайны в таблице. Мне действительно нужно динамическое решение. –

+0

@RomualdoAlves вам нужно будет создать процедуру для генерации этого sql динамически, а затем выполнить его. – Taryn

Смежные вопросы