2016-12-27 50 views
0

同一張表我有一個表結構如下:MySQL的內部聯接基於字段值

|id|record_id|key |vale 
|1 |2  |email |[email protected]  
|2 |2  |name |John  
|3 |2  |tel |676776  
|4 |3  |email |[email protected]  
|5 |3  |name |James  
|6 |3  |tel |7676767  
|7 |4  |emal |[email protected] 

我試圖顯示從同一個表匹配record_id的「電子郵件」和「名」。

我嘗試過的cfquery如下,但遺憾的是我沒有得到任何成功。

<cfquery name="getStatic" datasource="#session.odbcname#"> 
    SELECT * 
    FROM field_values n 
    INNER JOIN field_values e 
    ON e.key 
    AND e.field_values.key = 'name' 
    WHERE n.field_values.record_id = e.field_values.record_id 
</cfquery> 

任何關於我哪裏出錯的想法將不勝感激。

+2

只是爲了澄清幾件事情:1)當引用的列,使用*或者*表別名或完整的表名 - 不能同時使用(這將導致一個語法錯誤)。 2)'INNER JOIN'必須連接'ON',無論被引用的表有什麼共同的列,即'record_id' 3)它可能不會導致語法錯誤,但爲了可讀性和性能,最好只指定需要的列,而不是使用'select *'。 – Leigh

+0

顯示請預期的結果集 – Alex

+0

嗨,我試圖輸出電子郵件和姓名價值 – elixireu

回答

1

試試這個:

select t1.value email, t2.value name 
from field_values t1 
inner join field_values t2 
on t1.record_id = t2.record_id 
and t1.key = 'email' 
and t2.key = 'name'; 
+0

嗨,可惜我得到錯誤'未知列't1.vale''字段列表' – elixireu

+0

什麼是第四列的名稱你的桌子?它是'價值'嗎? – GurV

+0

哈哈 - 是的,我明白了 - 抱歉 - 它的'價值' – elixireu