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.
Advertisement
Answer
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.