在同一个表中连接列

时间:2014-10-14 11:09:04

标签: mysql mysqli

我需要获取与列名匹配的数据表单,然后使用外键将其与其他表连接。 这是表结构: -

表: user_master

id |   user_name      |   user_password   |  status
1  |   user_name_1    |       password     |    1
2  |   user_name_2    |       password     |    1
3  |   user_name_3    |       password     |    0

表: user_meta

id | user_id  |  meta_key  |   meta_value
1  |    1     |   fname    |     kris
2  |    1     |   lname    |     tris
3  |    2     |   fname    |     mac
4  |    2     |   lname    |     book

是否有可能获得这样的结果?

id |   user_name       |   user_password   |  status | fname  |  lname
1  |   user_name_1     |   password        |    1    | kris   |  tris
2  |   user_name_2     |   password        |    1    | mac    |  book

这样我就可以使用查询并输出像这样的数据

    foreach ($rows as $row) { 
        echo $row['id']
        ehco $row['fname'] .... and so on 

我正在使用this library进行数据库MySQLi查询

如果有可能,请你帮我解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

Select 

id ,   user_name    , user_password  ,status 
(select  meta_value from user_meta um where um.user_id = umst.user_id and meta_key like 'fname') fname  , 
(select  meta_value from user_meta um where um.user_id = umst.user_id and meta_key like 'lname') lname
from 

user_master usmt

答案 1 :(得分:0)

使用以下查询,这将适合您。

SELECT u.id,u.user_name,u.user_password,u.status,
(CASE WHEN um.meta_key = 'fname'  THEN um.meta_value END) as fname,
(SELECT meta_value from user_meta WHERE meta_key = 'lname' AND user_id = u.id ) as lname
FROM `user_master` as u 
INNER JOIN user_meta as um 
ON um.user_id = u.id
GROUP BY id