2014-10-14 8 views
0

Мне нужно получить таблицу формы данных, соответствующую именам столбцов, а затем присоединить ее к другой таблице с помощью внешнего ключа. Вот структура таблицы: -Присоединение столбцов в одной таблице

Таблица: 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 базы данных запроса

Можете ли вы помочь мне в этом, если вообще это возможно. Заранее спасибо.

ответ

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 
+0

это не помогает, '# 1064 - У Вас есть ошибка в вашем синтаксисе SQL проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи«(выберите meta_value из user_meta мкм, где мкм. user_id = umst.id 'в строке 2' – tamal3053

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 
Смежные вопросы