2013-07-22 3 views
-3

나는 두 개의 쿼리를 다음 주 잖아 : SQL 쿼리에서 두 배열을 병합하는 방법은 무엇입니까?

SELECT date(FROM_UNIXTIME(user_reg_date)) 'Current Date', COUNT(*) 'registered_user' 
FROM users 
WHERE user_reg_date >=1341100800 
AND user_reg_date <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_reg_date)) 

SELECT date(FROM_UNIXTIME(user_last_login)) 'Current Date', COUNT(*) 'logged_in_user' 
FROM users 
WHERE user_last_login >=1341100800 
AND user_last_login <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_last_login)) 

지금 나는 위의 쿼리에서 얻은 두 개의 배열을 병합하려는 각 배열 요소는 다음과 같은 형식이어야합니다.

아무에게도 도움이 될 수 있습니까? 미리 감사드립니다.

답변

1

매우 간단한 UNION ALL을 사용하고 나중에 SUM으로 날짜별로 그룹화하여 값을 얻을 수 있습니다.

SELECT DATE(FROM_UNIXTIME(date)) date, 
     SUM(registered_user) registered_user, 
     SUM(logged_in_user) logged_in_user 
FROM (
    SELECT user_reg_date date, 1 registered_user, 0 logged_in_user FROM users 
    UNION ALL 
    SELECT user_last_login, 0 registered_user, 1 logged_in_user FROM users 
) a 
WHERE date >= 1341100800 AND date <= 1374451200 
GROUP BY DATE(FROM_UNIXTIME(date)); 
+1

정말 고마워요. 귀하의 질의는 저를 위해 정말 마술을했습니다. 내 요구 사항에 따라 완벽하게 tworked. 나는 너의 대답을 받아 들였고 또한 그것을 upvoted. – PHPLover

+0

: 위의 쿼리와 마찬가지로 reg_date 및 last_login 날짜가 현재 주, 지난 주 및 지난 2 주 내에있는 동일한 레코드 수를 가져 오려고합니다. 어떻게 내가이 조건들을 어디서 쓸 수 있겠습니까? – PHPLover

+0

테스트 할 수는 없지만 테스트 할 수는 없지만 테스트 할 수는 없지만 'YEARWEEK (FROM_UNIXTIME (날짜)) = YEARWEEK (DATE_SUB YEARWEEK (FROM_UNIXTIME (날짜))> = YEARWEEK (DATE_SUB (NOW(), INTERVAL 1 Week)'각각 유망한 것으로 보입니다. –

2

사용 UNION이 두 테이블이

table1.id,table2.id 

같은 테이블 개체를 사용하여 전화를 have.Try 중복 열

SELECT date(FROM_UNIXTIME(user_reg_date)) 'Current Date', COUNT(*) 'registered_user' 
FROM users 
WHERE user_reg_date >=1341100800 
AND user_reg_date <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_reg_date)) 

UNION 

SELECT date(FROM_UNIXTIME(user_last_login)) 'Current Date', COUNT(*) 'logged_in_user' 
FROM users 
WHERE user_last_login >=1341100800 
AND user_last_login <=1374451200 
GROUP BY date(FROM_UNIXTIME(user_last_login)) 

하지만 조심

처럼 id 두 테이블에 존재하는 것을 고려 .

+0

나는 이것을 시도했지만 current_date 및 registered_user 만 제공합니다. 사실 두 배열을 배열에 넣고 싶습니다. – PHPLover

+0

당신은 'as'와 같이 COUNT (*)를 'registered_user'로 쓰고 있음을 잊어 버렸습니다. – Gautam3164

+0

@phpLover : 그렇게하지 못하게 하시겠습니까? 귀하의 질문에 귀하가 실제로 시도한 것을 보여주는 코드가 보이지 않으므로 다른 곳에서 추측 한 대답만으로도 이미 시도한 것을 알려주는 것은 다소 불공평합니다. 그렇게 생각하지 않아? – hakre

관련 문제