2012-11-21 44 views
0

可能重复:
MySQL use column names from another tableMySQL的选择值间接地通过不同的 '列名'

我有两个表:

  • TABLE_1从提取的一些话任何文字;和

  • TABLE_2与在相关文本

enter image description here

我倒是的单词(在列)频率喜欢以产生具有AUTHOR_ID和字TABLE_3(成行)存在于文本:

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

如何做到这一点在MySQL?

+2

叹气。 _你有没有试过?_ – Madbreaks

+0

你可以发布你想要的结果吗? – Taryn

+1

SELECT B.Author_Id,A.Column_Name FROM TABLE_1 A,TABLE_2 B,INFORMATION_SCHEMA.COLUMNSÇ 在表格名= 'TABLE_2' AND 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!如果我以前能够知道这些单词就没问题,但我不能。每个不同的文字都有不同的词。所以,不幸的是,表中偶尔会出现阿尔法,汽车,放大等字样。我真的需要一个动态解决方案。 –

+0

@RomualdoAlves你将不得不考虑创建一个过程来动态生成这个sql,然后执行它。 – Taryn