2016-11-21 1 views
1

Joomla 사용자와 사용자 프로필 데이터를 Excel 테이블로 다운로드해야합니다. SQL 쿼리를 입력해야하는 Joomla 구성 요소 "VJ SQL to File"을 사용하고 있습니다. 이제 문제가 시작됩니다. 나는 다음 쿼리 입력 :정확하게 joomla 사용자와 사용자 프로필을 덤프하는 방법

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 파일에서 덤프를 얻는 방법에 대해 더 좋은 아이디어가 있다면 알려주십시오. 내가 그 문제를 해결하는 가장 좋은 방법이라고 생각

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 

: 당신은 MySQL 데이터베이스에서이 작업을 실행하는 경우

답변

0

당신은 GROUP_CONCAT를 사용할 수 있습니다.

Joomla는 모든 행을 별도의 행으로 저장하므로 JOIN/INNER JOIN/LEFT JOIN은 ID 당 여러 행을 생성합니다.

는 (나는 내 ​​자신의 Joomla를 DB에이 테스트는이 출력을 생성합니다 :

user_id name username email   profile_values 
89  name1 uname1 [email protected] "23521","","","","","","","","","",false 

) 힌트에 대한

+0

감사합니다. 문제는 Excel 파일이 각 셀마다 하나의 값만 가져야한다는 것입니다. 프로필 _value에 제안 된 솔루션의 문자열이 포함되어 있습니다. – kraadde