表用户:
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
答案 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