I have a simple query:
SELECT COUNT(ud.UserID), COUNT(DISTINCT ud.ProductID)
FROM users_data AS ud
JOIN products AS t ON t.ID = ud.ProductID
WHERE ud.UserID = '3'
Which results in:
COUNT(ud.UserID) COUNT(DISTINCT ud.ProductID)
519 425
When I try to include in a while or for loop:
DELIMITER //
SET @i = 0;
FOR i IN 1..10
DO SELECT COUNT(ud.UserID), COUNT(DISTINCT ud.ProductID)
FROM users_data AS ud
JOIN products AS t ON t.ID = ud.ProductID
WHERE ud.UserID = (i)
END FOR
//
I get no output other than:
Query executed OK, 0 rows affected.
Is there something else I'm misssing? thank you.
Why do you want to use a loop
? This is much better to do as a simple query:
SELECT ud.UserId, COUNT(*), COUNT(DISTINCT ud.ProductID)
FROM users_data ud
GROUP BY ud.UserID;
If you want specific users, you can use a WHERE
clause:
SELECT ud.UserId, COUNT(*), COUNT(DISTINCT ud.ProductID)
FROM users_data ud
WHERE ud.UserId IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
GROUP BY ud.UserID;
Note: I don't think the JOIN
is necessary.