2016-12-07 22 views
-2
Initial: 
1_ = country 
2_ = gender 
3_ = purpose 

enter image description here如何從此結構表中進行SQL查詢?

如何使SQL查詢的數據顯示這樣的

enter image description here

+3

不張貼圖片。而是將它們作爲文本發佈。 – Rahul

+2

你還沒有嘗試過任何東西,請至少發佈你迄今爲止所做的事情。 你不能只指望人們爲你做事。並指定一個RDBMS ... –

+0

對於我用來詢問的圖片感到抱歉。我是新來的。下次我會用你的建議。謝謝。 –

回答

0

試試這個(這是一個mysql的方法),如果你想在SO中提出一個問題,下一次請發表你的表格模式不帶圖片。

select 
    u.id, 
    u.name, 
    max(case when ud.code like '1_%' then fc.code_name else '' end) as country, 
    max(case when ud.code like '2_%' then fc.code_name else '' end) as gender, 
    max(case when ud.code like '3_%' then fc.code_name else '' end) as purpose, 
    group_concat(distinct vt.visit_to) as visit_to 
from t_users u 
left join t_user_details ud 
on u.id = ud.id_user 
left join t_field_code fc 
on ud.code = fc.code 
left join t_visit_to vt 
on u.id = vt.id_user 
group by u.id, u.name 
+0

對於我用來問的圖片感到抱歉。我是新來的。下次我會用你的建議。謝謝。 –

0

這將做的工作或多或少:

SELECT user.id, 
     user.name, 
     country.code_name AS country, 
     gender.code_name AS gender, 
     purpose.code_name AS purpose, 
     visit.to_to 
FROM t_users  AS user 
JOIN t_user_details AS details 
    ON user.id = details.user_id 
LEFT OUTER JOIN t_field_code AS country 
      ON details.code = country.code 
      AND country.code LIKE '1_%' 
LEFT OUTER JOIN t_field_code AS gender 
      ON details.code = gender.code 
      AND gender.code LIKE '2_%' 
LEFT OUTER JOIN t_field_code AS purpose 
      ON details.code = purpose.code 
      AND purpose.code LIKE '3_%' 
LEFT OUTER JOIN t_visit_to AS visit 
      ON user.id = visit.id_user 
ORDER BY user.id; 

唯一的問題是,它如果用戶有更多地方可以訪問,則會提供多行。