我需要将Joomla用户和用户个人资料数据下载到excel表。我正在使用Joomla组件" VJ SQL to File"这需要输入SQL查询。现在问题开始了。 我输入了以下查询:
select
vpa1_user_profiles.user_id,
vpa1_user_profiles.profile_key,
vpa1_user_profiles.profile_value,
vpa1_users.name,
vpa1_users.username,
vpa1_users.email
from
vpa1_users
inner join vpa1_user_profiles
on
vpa1_users.id = vpa1_user_profiles.user_id
结果如下所示:
user_id profile_key profile_value name username email
4256 profile.dob "1999-12-31 23:00:00" Test Testuser1234 abcdefg.hi
4256 profile.modnr "09080706" Test Testuser1234 abcdefg.hi
4256 profile.nr "22" Test Testuser1234 abcdefg.hi
4256 profile.ort "Pfefferland" Test Testuser1234 abcdefg.hi
4256 profile.plz "9876" Test Testuser1234 abcdefg.hi
4256 profile.str "Landstr." Test Testuser1234 abcdefg.hi
4256 profile.telnr "01020304" Test Testuser1234 abcdefg.hi
4256 profile.username "Test" Test Testuser1234 abcdefg.hi
4256 profile.uservor "User" Test Testuser1234 abcdefg.hi
3个右端列来自vpa1_users表,3个左端列来自vpa1_user_profiles表。 但我需要的是一个Excel表,每行有一条记录。
有关如何解决此问题的建议,或者是否有人更好地了解如何在一个excel文件中获取转储?
答案 0 :(得分:0)
如果你在MySQL数据库上运行它,你可以使用group_concat:
SELECT user_profiles.user_id, users.name, users.username, users.email, user_profiles.profile_values
FROM x2iu9_users AS users
LEFT JOIN (
SELECT user_id, GROUP_CONCAT( profile_value
SEPARATOR ',' ) profile_values
FROM x2iu9_user_profiles
GROUP BY user_id
) AS user_profiles ON users.id = user_profiles.user_id
我认为这是解决问题的最佳方法。
很明显,JOIN / INNER JOIN / LEFT JOIN会为每个ID产生多行,因为Joomla将每个user_profile键/值对存储为一个单独的行。
(我在我自己的Joomla DB上测试了它,它会产生这个输出:
user_id name username email profile_values
89 name1 uname1 example@mail.com "23521","","","","","","","","","",false
)