2012-11-21 48 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