Cuando se trata de consultas, existen recursos más poderosos en SQL que un bucle.
Piensa que el SQL es un lenguaje de consultas, por lo que está optimizado precisamente para ese tipo de tareas.
En las tablas que planteas no existen precios, ni valores de compras, solamente los ID que no resultan muy claros a qué se refieren. Como una forma estandarizada de mnemotécnica te sugiero que no uses un nombre tan genérico como "ID" para todas las tablas. És mejor usar el "ID como sufijo del nombre de campo, algo así como "USUARIO_ID" y "COMPRA_ID" (los DBA usan habitualmente esto así). Esto luego te facilitará la escritura de las consultas, te lo aseguro.
Bien. Suponiendo estas tablas:
Cita: USUARIO(usuario_id, login, pass, referido)
COMPRA(compras_id, usuario_id, nombre_login)
Para saber cuántas compras tiene cada usuario, sería:
Código sql:
Ver originalSELECT usuario_id, COUNT(*) compras_totales
FROM usuario LEFT JOIN compra USING(usuario_id)
GROUP BY usuario_id;
Podría usar INNER JOIN en lugar de LEFT JOIN, pero eso no te devolvería los usuarios con cero compras.