2013-02-08 90 views
0

表用戶記錄:一個查詢來獲取其中細胞在不同的表

user_id  user_username user_password 
----------------------------------------- 
1   tomasr   NULL 

表useritems:

f_user_id f_moduleItem_id  userItem_value 
-------------------------------------------------- 
1   1     John 
1   2     Wayne 

表模塊:

module_id module_systemTitle module_title 
------------------------------------------------ 
1   users    Users 

表moduleitems:

moduleItem_id f_module_id  moduleItem_title moduleItem_order 
---------------------------------------------------------------------------- 
1    1    Firstname   1 
2    1    Lastname   2 

大家好, 如何從用戶項目表中得到數據的用戶列表,就像一行用戶一樣。這意味着數量行eqal數量的用戶。

慾望的結果是:

user_id user_username firstname lastname 
------------------------------------------------------------------------------ 

1  tomasr   John   Wayne 
+1

'whathaveyoutried.com' –

+1

什麼是你想要的結果? –

回答

0

你將要使用INNER JOIN將兩個表連接在一起。該鏈接會更好,但像這樣的東西解釋:

SELECT u.user_username, i.userItem_value 
FROM users u 
INNER JOIN userItems i ON u.user_id=i.f_user_id; 

這是什麼需要做的是回到那裏找到一個匹配的所有行,但請記住,如果沒有在userItems行相匹配的用戶錶行則用戶行不會包含在結果中。爲此,你會想看看左連接和使用IFNULL(類似的東西)。

0
SELECT a.user_ID, 
     a.user_username, 
     MAX(CASE WHEN c.moduleItem_title = 'Firstname' THEN b.userItem_value ELSE NULL END) `Firstname`, 
     MAX(CASE WHEN c.moduleItem_title = 'Lastname' THEN b.userItem_value ELSE NULL END) `Lastname` 
FROM users a 
     INNER JOIN useritems b 
      On a.user_ID = b.f_user_id 
     INNER JOIN moduleitems c 
      ON b.f_moduleItem_id = c.moduleItem_id 
GROUP BY a.user_ID, a.user_username 
+0

好,但名字,姓氏是完全可編輯的(可以在那裏,不需要或可以調用不同的方式)。同時可以有其他項目(電子郵件,電話等)。 – tomasr

+0

是可能的,使其一般。 – tomasr

+0

您知道表模塊項中的標題可以編輯...例如,姓氏可以只是名稱。這就是爲什麼在查詢中不能使用這些關鍵字的原因。 – tomasr