You are on page 1of 3

DELIMITER $$

USE `miobond_prod`$$
DROP PROCEDURE IF EXISTS `usp_show_friend_daily`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `usp_show_friend_daily`(p_userlogin_
id INT)
BEGIN
DECLARE i INT;
DECLARE v_end INT;
DECLARE v_nowuser INT;
DROP TABLE IF EXISTS temp;
CREATE TEMPORARY TABLE temp(
identity INT,
userlogin_id INT,
facebook_id BIGINT,
subscription_date DATETIME
);
DROP TABLE IF EXISTS holder;
CREATE TEMPORARY TABLE holder(
facebook_id BIGINT,
question_id INT,
response VARCHAR(500),
dailyresponse_id INT,
question_type VARCHAR(1)
);
SET i = 1;
INSERT INTO temp
SELECT
@r := @r + 1 identity,
userlogin_id,
facebook_id,
subscription_date
FROM
(
SELECT
2 AS s,
invited_by userlogin_id,
(SELECT
facebook_id
FROM
userlogin
WHERE
userlogin_id = invited_by)
facebook_id,
subscription_date
FROM
daily_subscription ds
INNER JOIN userlogin u
ON ds.invited_to = u.facebook_id
WHERE
u.userlogin_id = p_userlogin_id AND
ds.accept_status = 'Y'
UNION
SELECT
3,
u.userlogin_id,
u.facebook_id,
subscription_date
FROM
daily_subscription ds
INNER JOIN userlogin u
ON ds.invited_to = u.facebook_id
WHERE
ds.invited_by = p_userlogin_id AND
ds.accept_status = 'Y'
UNION
SELECT
1,
p_userlogin_id,
(SELECT
facebook_id
FROM
userlogin
WHERE
userlogin_id = p_userlogin_id)
,
CURDATE()
) d
INNER JOIN
(SELECT
@r := 0) d1
ON 1 = 1
ORDER BY
s;
SET v_end =
(SELECT
MAX(identity)
FROM
temp);
WHILE i <= v_end
DO
SET v_nowuser =
(SELECT
userlogin_id
FROM
temp
WHERE
identity = i);
INSERT INTO holder
SELECT
(SELECT
facebook_id
FROM
userlogin
WHERE
userlogin_id = v_nowuser)
facebook_id,
dq.question_id,
IFNULL(dr.response, ' ') response,
IFNULL(dr.dailyresponse_id,0)dailyresponse_id,
q.question_type
FROM
daily_question dq
LEFT JOIN daily_response dr
ON dq.dailyquestion_id = dr.dailyquestion_id AND
dq.active_status = 'Y'
AND
dr.userlogin_id = v_nowuser
LEFT JOIN question q ON q.question_id=dq.question_id
WHERE
DATE_FORMAT(dq.created_date, '%Y-%m-%d') = (SELECT DATE_FORMAT(DATE_ADD(NO
W(), INTERVAL -3 HOUR),'%Y-%m-%d')); -- CURDATE();
SET i = i + 1;
END WHILE;
/*SELECT
*
FROM
holder WHERE facebook_id IS NOT NULL AND facebook_id IN (SELECT facebook_id
FROM user_friend WHERE userlogin_id=p_userlogin_id UNION SELECT facebook_id FROM
userlogin WHERE userlogin_id=p_userlogin_id);
-- ,(SELECT DISTINCT(circlename) FROM friend_summary WHERE userfacebook_id=(SE
LECT facebook_id FROM userlogin WHERE userlogin_id=p_userlogin_id) AND facebook_
id=h.facebook_id)
/* SELECT
h.*,fs.circlename,fs.degree,fs.maxlimit,case when (SELECT score FROM user_sc
ore WHERE userlogin_id=(select userlogin_id from userlogin where facebook_id=h.f
acebook_id)) is null then 0 else
(SELECT score FROM user_score
WHERE userlogin_id=(SELECT userlogin_id FROM userlogin WHERE facebook_id=h.f
acebook_id)) end friendliness_score
FROM
holder h
left join friend_summary fs on fs.userfacebook_id=(SELECT facebook_id FROM u
serlogin WHERE userlogin_id=p_userlogin_id) AND fs.facebook_id=h.facebook_id
WHERE h.facebook_id IS NOT NULL AND h.facebook_id IN (SELECT facebook_id FRO
M user_friend WHERE userlogin_id=p_userlogin_id UNION SELECT facebook_id FROM us
erlogin WHERE userlogin_id=p_userlogin_id);
*/
SELECT
h.*,IFNULL(fs.circlename,'')circlename,IFNULL(fs.degree,0)degree,IFNULL(fs.m
axlimit,0)maxlimit
,IFNULL(us.score,0) friendliness_score
FROM
holder h
LEFT JOIN friend_summary fs ON fs.facebook_id=h.facebook_id AND fs.userfaceb
ook_id = (SELECT facebook_id FROM userlogin WHERE userlogin_id = p_userlogin_id)
LEFT JOIN user_score us ON us.userlogin_id = (SELECT userlogin_id FROM userl
ogin WHERE facebook_id=h.facebook_id)
WHERE h.facebook_id IS NOT NULL AND h.facebook_id IN (SELECT facebook_id FRO
M user_friend WHERE userlogin_id=p_userlogin_id UNION SELECT facebook_id FROM us
erlogin WHERE userlogin_id=p_userlogin_id);

END$$
DELIMITER ;

You might also like