一个查询来获取单元格位于不同表中的记录

时间:2013-02-08 08:52:03

标签: mysql sql

表用户:

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

表用户项目:

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

表模块:

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

表模块项目:

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

各位大家好, 如何从useritems表获取具有一个用户的一行的用户列表。这是平均数行eqal数用户。

欲望结果是:

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

1       tomasr          John         Wayne

2 个答案:

答案 0 :(得分: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中没有与users表行匹配的行,则用户行将不会包含在结果中。为此,你需要看看LEFT JOINS并使用IFNULL(类似的东西)。

答案 1 :(得分: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